From 2ef14c3ff6319d838211f9c30832c003744c8f09 Mon Sep 17 00:00:00 2001 From: Brian Robbins Date: Tue, 5 Jan 2021 08:54:55 -0800 Subject: [PATCH] Check EnabledFor* individually for non-self-describing events (#46555) --- .../src/System/Diagnostics/Tracing/EventSource.cs | 49 ++++++++++------------ 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/EventSource.cs b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/EventSource.cs index 7b5f398..9a96d44 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/EventSource.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Tracing/EventSource.cs @@ -1242,40 +1242,37 @@ namespace System.Diagnostics.Tracing } #if FEATURE_MANAGED_ETW - if (m_eventData[eventId].EnabledForETW + if (!SelfDescribingEvents) + { + if (m_eventData[eventId].EnabledForETW && !m_etwProvider.WriteEvent(ref m_eventData[eventId].Descriptor, m_eventData[eventId].EventHandle, pActivityId, relatedActivityId, eventDataCount, (IntPtr)data)) + ThrowEventSourceException(m_eventData[eventId].Name); +#if FEATURE_PERFTRACING + if (m_eventData[eventId].EnabledForEventPipe && !m_eventPipeProvider.WriteEvent(ref m_eventData[eventId].Descriptor, m_eventData[eventId].EventHandle, pActivityId, relatedActivityId, eventDataCount, (IntPtr)data)) + ThrowEventSourceException(m_eventData[eventId].Name); +#endif // FEATURE_PERFTRACING + } + else if (m_eventData[eventId].EnabledForETW #if FEATURE_PERFTRACING || m_eventData[eventId].EnabledForEventPipe #endif // FEATURE_PERFTRACING - ) + ) { - if (!SelfDescribingEvents) + TraceLoggingEventTypes? tlet = m_eventData[eventId].TraceLoggingEventTypes; + if (tlet == null) { - if (!m_etwProvider.WriteEvent(ref m_eventData[eventId].Descriptor, m_eventData[eventId].EventHandle, pActivityId, relatedActivityId, eventDataCount, (IntPtr)data)) - ThrowEventSourceException(m_eventData[eventId].Name); -#if FEATURE_PERFTRACING - if (!m_eventPipeProvider.WriteEvent(ref m_eventData[eventId].Descriptor, m_eventData[eventId].EventHandle, pActivityId, relatedActivityId, eventDataCount, (IntPtr)data)) - ThrowEventSourceException(m_eventData[eventId].Name); -#endif // FEATURE_PERFTRACING + tlet = new TraceLoggingEventTypes(m_eventData[eventId].Name, + m_eventData[eventId].Tags, + m_eventData[eventId].Parameters); + Interlocked.CompareExchange(ref m_eventData[eventId].TraceLoggingEventTypes, tlet, null); } - else + EventSourceOptions opt = new EventSourceOptions { - TraceLoggingEventTypes? tlet = m_eventData[eventId].TraceLoggingEventTypes; - if (tlet == null) - { - tlet = new TraceLoggingEventTypes(m_eventData[eventId].Name, - m_eventData[eventId].Tags, - m_eventData[eventId].Parameters); - Interlocked.CompareExchange(ref m_eventData[eventId].TraceLoggingEventTypes, tlet, null); - } - EventSourceOptions opt = new EventSourceOptions - { - Keywords = (EventKeywords)m_eventData[eventId].Descriptor.Keywords, - Level = (EventLevel)m_eventData[eventId].Descriptor.Level, - Opcode = (EventOpcode)m_eventData[eventId].Descriptor.Opcode - }; + Keywords = (EventKeywords)m_eventData[eventId].Descriptor.Keywords, + Level = (EventLevel)m_eventData[eventId].Descriptor.Level, + Opcode = (EventOpcode)m_eventData[eventId].Descriptor.Opcode + }; - WriteMultiMerge(m_eventData[eventId].Name, ref opt, tlet, pActivityId, relatedActivityId, data); - } + WriteMultiMerge(m_eventData[eventId].Name, ref opt, tlet, pActivityId, relatedActivityId, data); } #endif // FEATURE_MANAGED_ETW -- 2.7.4