Skip to content

Comments

Strip .il and .ni suffixes from TraceModuleFile.Name#2364

Merged
leculver merged 1 commit intomicrosoft:mainfrom
leculver:issue_3102
Feb 24, 2026
Merged

Strip .il and .ni suffixes from TraceModuleFile.Name#2364
leculver merged 1 commit intomicrosoft:mainfrom
leculver:issue_3102

Conversation

@leculver
Copy link
Collaborator

Fix dotnet/diagnostics#3102: EventPipe module names have unexpected .il suffix.

TraceLog.ManagedModuleLoadOrUnload creates synthetic .il.dll paths for ReadyToRun assemblies to maintain separate IL and native PDB entries. This is an internal implementation detail that was leaking into the user-visible Name property, causing tools like dotnet-stack, PerfView, and WPA to display module names like 'System.Private.CoreLib.il' instead of 'System.Private.CoreLib'.

Strip the .il and .ni suffixes in TraceModuleFile.Name, matching the same logic already used in GetSourceLine() for source resolution.

@leculver
Copy link
Collaborator Author

TraceEvent tests pass (well, they match the baseline of main).

@leculver leculver enabled auto-merge (squash) February 15, 2026 15:26
@brianrob
Copy link
Member

Thanks @leculver. I'm wondering if we might be able to just remove the ".il" suffix entirely, rather than stripping it off in various places. It doesn't actually represent a file on disk, so there isn't a risk of not finding the file. What if we removed this code and then we could even remove other code that strips it before presentation, such as this.

@leculver
Copy link
Collaborator Author

Will take a look, thanks!

Fix dotnet/diagnostics#3102: EventPipe module names have unexpected .il suffix.

TraceLog.ManagedModuleLoadOrUnload was creating synthetic .il.dll paths for
ReadyToRun assemblies to maintain separate IL and native PDB entries. This
internal implementation detail leaked into user-visible names, causing tools
like dotnet-stack, PerfView, and WPA to display module names like
'System.Private.CoreLib.il' instead of 'System.Private.CoreLib'.

Remove the synthetic .il path creation at the source instead of stripping
it downstream. The IL module now uses the same path as the native module
since there's no separate IL-only file on disk. Also strip .ni suffixes
from TraceModuleFile.Name for NGEN images.
@leculver
Copy link
Collaborator Author

Done, @brianrob can you take a look?

Copy link
Member

@brianrob brianrob left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Thanks @leculver!

@leculver leculver merged commit 8698727 into microsoft:main Feb 24, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

EventPipe module names have unexpected .il suffix

2 participants