diff --git a/src/native/eventpipe/ep-provider.c b/src/native/eventpipe/ep-provider.c index c8640433478fb..fd8fb57cbd272 100644 --- a/src/native/eventpipe/ep-provider.c +++ b/src/native/eventpipe/ep-provider.c @@ -245,6 +245,16 @@ ep_provider_add_event ( ep_requires_lock_not_held (); + // Keyword bits 44-47 are reserved for use by EventSources, and every EventSource sets them all. + // We filter out those bits here so later comparisons don't have to take them in to account. Without + // filtering, EventSources wouldn't show up with Keywords=0. + uint64_t session_mask = ~0xF00000000000; + // -1 is special, it means all keywords and gets used on internal error notifications. Don't change it. + uint64_t all_keywords = (uint64_t)(-1); + if (keywords != all_keywords) { + keywords &= session_mask; + } + EventPipeEvent *instance = ep_event_alloc ( provider, keywords,