Substantial refinements to Network Tracing / NetBlame Plug-in#45
Merged
Leonid-Zakharov merged 3 commits intomainfrom Nov 12, 2025
Merged
Substantial refinements to Network Tracing / NetBlame Plug-in#45Leonid-Zakharov merged 3 commits intomainfrom
Leonid-Zakharov merged 3 commits intomainfrom
Conversation
Leonid-Zakharov
approved these changes
Nov 12, 2025
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.
Standardize on unknown thread: tidUnknown = -1
-Using Thread ID 0 is ambiguous.
Improve validity of Process ID (PID)
-Many events have ambiguous ProcessId values, particular TcpIp (TCP/UDP) and Winsock.
-Winsock: Use the "Location" field to determine whether the event is synchronous and the PID is reliable.
-TcpIp: Classify the PID as confirmed when it comes from the "Process" field (not the process which emitted the event).
Improve correlation of WebIO (WinHTTP) Requests, Connections, Sockets
-Improve the code which finds and updates the Connection for the events: ConnectionSocketSend/Receive, ConnectionSocketConnect_Stop, ConnectionSocketClose
-Synthesize missing Requests & Connections (near the beginning of the trace).
-Track the validity of the Connection ID (DEBUG).
Improve correlation across event types.
-Particularly, improve correlation of UDP events and Winsock->UDP events.
Reconstruct Connection activity that appears near the start of the trace.
Consolidate IP address type resolution.
-There are ranges of IP addresses which have special functions. Use these in the GeoLocation column and elsewhere.
Better manage and report symbol resolution.
-Better handle missing stackwalks.
-Remove ambiguity when there's only one stackwalk (so it's both First & Last!?).
The rules for finding the best version of WPA, WPR, XPerf are subtly different.
-XPerf installed with Store-WPA only works when launched as a packaged app.
-Respect WPT_PATH when searching for XPerf.
Confirm the above improvements against a variety of Network traces.
-ETW events can be (seemingly) irregular. Gathering and correlating them is not straightforward: TCP/UDP <-> WinSock <-> WebIO or WinINet
Set the version number to 1.6.0
Include.ps1
Include.WPA.ps1
BETA\TraceNetwork.ps1
BETA\GetSymbols.bat
NetBlame\NetBlameAddIn.csproj
NetBlame\GatherTables.cs
NetBlame\NetBlameDataProcessor.cs
NetBlame\CallStack.cs
NetBlame\Auxiliary\Extensions.cs
NetBlame\Auxiliary\GeoLocation.cs
NetBlame\Auxiliary\NetUtil.cs
NetBlame\Auxiliary\Tasks.cs
NetBlame\Providers\DNSClient.cs
NetBlame\Providers\MsoIdleMan.cs
NetBlame\Providers\TcpIp.cs
NetBlame\Providers\Thread.Classic.cs
NetBlame\Providers\Thread.cs
NetBlame\Providers\WebIO.Connection.cs
NetBlame\Providers\WebIO.cs
NetBlame\Providers\WebIO.Request.cs
NetBlame\Providers\WebIO.Socket.cs
NetBlame\Providers\WinHTTP.cs
NetBlame\Providers\WinINet.cs
NetBlame\Providers\WinsockAFD.cs
NetBlame\Providers\WThreadPool.Timer.cs
NetBlame\Tables\NetBlameTable.ThreadPool.cs
NetBlame\Tables\NetBlameTable.URL.cs
NetBlame\Tables\NetBlameTable.WinSock.cs
NetBlame\Tables\TableBase.cs