Add Missing WCF Event Templates#2390
Merged
brianrob merged 5 commits intomicrosoft:mainfrom Mar 30, 2026
Merged
Conversation
leculver
previously approved these changes
Mar 24, 2026
Collaborator
leculver
left a comment
There was a problem hiding this comment.
LGTM. Though any reason you skipped 57398?
mconnew
reviewed
Mar 25, 2026
| add | ||
| { | ||
| // action, eventid, taskid, taskName, taskGuid, opcode, opcodeName, providerGuid, providerName | ||
| source.RegisterEventTemplate(new ThreeStringsTemplateEATraceData(value, 57394, 8140, "HandledException", Guid.Empty, 0, "Info", ProviderGuid, ProviderName)); |
Member
There was a problem hiding this comment.
Where are you getting a Task value of 8140 from? Looking at the WCF code, it looks to me like it's being emitted with the Task field in the EventDescriptor set to 0.
Member
Author
There was a problem hiding this comment.
@mconnew this looks like it was copilot-hallucinated. They should all be 0 now.
c3bf7c6 to
f399f52
Compare
- Rename ServiceAction to SoapAction in Multidata22TemplateHATraceData to fix bug where PayloadValue(0) and ToXml() resolved to the Action<T> delegate instead of the string property - Replace 0xFFFF sentinel event IDs with correct IDs for 7 events: 39456-39460 (workflow tracking), 57398 (MaxInstancesExceeded), 62326 (HttpHandlerPickedForUrl) - Add 17 missing infrastructure events (IDs 57393-57410, except 57398) with event properties and template registrations - Expand EnumerateTemplates array from 464 to 481 entries Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add ApplicationServerTraceEventParser to RegisterStandardParsers() so WCF events are automatically parsed when processing ETL/ETLX files. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
f399f52 to
50a54a7
Compare
Member
Author
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
Fixed 4 issues in the synthetic nettrace trace test: 1. Chunk05 metadataId propagation: WriteEvents_Chunk05 used a local 'id' variable but never propagated it back to the ref parameter, causing all subsequent chunks (06+) to reference wrong metadata IDs. 2. Chunk05 threadIndex: Changed from 0 to 999 for consistency with all other chunks. 3. Chunk09 metadataId calculation: Fixed baseMetadataId = __metadataId - 37 to baseMetadataId = __metadataId (the -37 offset was incorrect) and added proper metadataId advancement (+37) after writing events. 4. Chunk01 template fields: Removed spurious EventTime (FileTime) fields from all 12 TemplateHA field arrays. The parser skips EventTime and reads subsequent fields at offsets that assume it is not present. Updated two validation indices (IsFaultSource 12->11, SubInstanceID 4->3) to match the corrected field positions. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…erviceAction back-compat alias - Fix 17 new events (57393-57410) to unregister with correct event ID and ProviderGuid instead of (0, Guid.Empty) - Add [Obsolete] ServiceAction property alias on Multidata22TemplateHATraceData to preserve API compatibility after the SoapAction rename Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Change firedEvents dictionary key from int (event ID) to string (event name) - Use event name-based variable names in Validate methods - Remove event ID numbers from comments and assert messages Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
mconnew
approved these changes
Mar 30, 2026
This was referenced Mar 31, 2026
Merged
This was referenced Apr 6, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The
ApplicationServerTraceEventParserhad event ID constants defined for 16 WCF infrastructure events (57394–57410) but was missing the corresponding event handler properties and template entries inEnumerateTemplates(). This caused these events to display asEventID(57394)etc. instead of their proper names likeHandledExceptionandThrowingEtwException.Additionally,
ApplicationServerTraceEventParserwas not registered as a standard parser inTraceLog, so PerfView's ETLX conversion/read path never instantiated it.Changes
ApplicationServerTraceEventParser.csAdded 16 missing event handler properties and template registrations for:
HandledException(57394),ShipAssertExceptionMessage(57395),ThrowingException(57396),UnhandledException(57397)TraceCodeEventLog*variants (57399–57403)HandledExceptionWarning/Error/Verbose(57404–57406)ThrowingExceptionVerbose(57407),EtwUnhandledException(57408)ThrowingEtwExceptionVerbose(57409),ThrowingEtwException(57410)Template types and field definitions were matched to the WCF ETW manifest (
Microsoft-Windows-Application Server-Applicationsprovider).TraceLog.csRegistered
ApplicationServerTraceEventParserinRegisterStandardParsers()so PerfView resolves these event names when reading ETLX files.Testing
TraceLog.OpenOrConvert(PerfView's code path) — events 57394 and 57410 now resolve asHandledExceptionandThrowingEtwExceptionwith proper payload fields