Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/TraceEvent/AutomatedAnalysis/StackView.cs
Original file line number Diff line number Diff line change
Expand Up @@ -297,8 +297,8 @@ private static bool SymbolNamesMatch(string requestedName, string foundName)

// Allow the found name to be of equivalent or greater length than the requested length.
// Example:
// Requested: System.Private.CoreLib.il!System.String.Concat
// Found: System.Private.CoreLib.il!System.String.Concat(class System.String,class System.String)
// Requested: System.Private.CoreLib!System.String.Concat
// Found: System.Private.CoreLib!System.String.Concat(class System.String,class System.String)
if (foundName.Length < requestedName.Length)
{
return false;
Expand Down
16 changes: 4 additions & 12 deletions src/TraceEvent/TraceLog.cs
Original file line number Diff line number Diff line change
Expand Up @@ -342,7 +342,7 @@ private void SetupInitialRundownCallbacks(EventPipeEventSource rawEvents)
clrRundownParser.MethodDCStopVerbose += delegate (MethodLoadUnloadVerboseTraceData data)
{
// Note: we need this also for non-jitted methods, otherwise we won't resolve some frames, for example:
// "System.Private.CoreLib.il" - "System.Threading.Tasks.Task.Wait()"
// "System.Private.CoreLib" - "System.Threading.Tasks.Task.Wait()"
TraceProcess process = processes.GetOrCreateProcess(data.ProcessID, data.TimeStampQPC);
process.InsertJITTEDMethod(data.MethodStartAddress, data.MethodSize, delegate ()
{
Expand Down Expand Up @@ -7041,18 +7041,10 @@ internal void ManagedModuleLoadOrUnload(ModuleLoadUnloadTraceData data, bool isL
}
// This is the CoreCLR (First Generation) ReadyToRun case. There still is a native PDB that is distinct
// from the IL PDB. Unlike CoreCLR NGEN, it is logged as a IL file, but it has native code (and thus an NativePdbSignature)
// We treat the image as a native image and dummy up a il image to hang the IL PDB information on.
// We treat the image as a native image. The IL module uses the same path since there's no separate IL-only file on disk.
else if (nativeModulePath.Length == 0 && nativePdbSignature != Guid.Empty && data.ManagedPdbSignature != Guid.Empty)
{
// And make up a fake .il.dll module for the IL
var suffixPos = ilModulePath.LastIndexOf(".", StringComparison.OrdinalIgnoreCase);
if (0 < suffixPos)
{
// We treat the image as the native path
nativeModulePath = ilModulePath;
// and make up a dummy IL path.
ilModulePath = ilModulePath.Substring(0, suffixPos) + ".il" + ilModulePath.Substring(suffixPos);
}
nativeModulePath = ilModulePath;
}

int index;
Expand Down Expand Up @@ -8330,7 +8322,7 @@ public SourceLocation GetSourceLine(SymbolReader reader, CodeAddressIndex codeAd
{
// In CoreCLR, the managed image IS the native image, so has a .ni suffix, remove it if present.
var moduleFileName = moduleFile.ManagedModule.Name;
if (moduleFileName.EndsWith(".ni", StringComparison.OrdinalIgnoreCase) || moduleFileName.EndsWith(".il", StringComparison.OrdinalIgnoreCase))
if (moduleFileName.EndsWith(".ni", StringComparison.OrdinalIgnoreCase))
{
moduleFileName = moduleFileName.Substring(0, moduleFileName.Length - 3);
}
Expand Down