Skip to content

R2RDump crashes when disassembling composite framework due to duplicate key in PGO method map #64291

@trylek

Description

@trylek

Example command line:

dotnet artifacts\bin\coreclr\windows.x64.Debug\r2rdump\r2rdump.dll --sc --header --disasm --in artifacts\tests\coreclr\windows.x64.Debug\Tests\Core_Root\framework-r2r.dll --out artifacts\tests\coreclr\windows.x64.Debug\Tests\Core_Root\framework-r2r.dll.r2rdump

Diagnostic output:

D:\git\runtime4\.dotnet
Error: System.ArgumentException: An item with the same key has already been added. Key: Interop+IpHlpApi+FIXED_INFO System.Runtime.InteropServices.Marshal.PtrToStructure(IntPtr)
   at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)
   at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)
   at ILCompiler.Reflection.ReadyToRun.ReadyToRunReader.ParsePgoMethods() in D:\git\runtime4\src\coreclr\tools\aot\ILCompiler.Reflection.ReadyToRun\ReadyToRunReader.cs:line 1075
   at ILCompiler.Reflection.ReadyToRun.ReadyToRunReader.EnsureMethods() in D:\git\runtime4\src\coreclr\tools\aot\ILCompiler.Reflection.ReadyToRun\ReadyToRunReader.cs:line 515
   at ILCompiler.Reflection.ReadyToRun.ReadyToRunReader.get_InstanceMethods() in D:\git\runtime4\src\coreclr\tools\aot\ILCompiler.Reflection.ReadyToRun\ReadyToRunReader.cs:line 337
   at R2RDump.TextDumper.DumpSectionContents(ReadyToRunSection section) in D:\git\runtime4\src\coreclr\tools\r2rdump\TextDumper.cs:line 392
   at R2RDump.TextDumper.DumpSection(ReadyToRunSection section) in D:\git\runtime4\src\coreclr\tools\r2rdump\TextDumper.cs:line 122
   at R2RDump.TextDumper.DumpHeader(Boolean dumpSections) in D:\git\runtime4\src\coreclr\tools\r2rdump\TextDumper.cs:line 83
   at R2RDump.R2RDump.Dump(ReadyToRunReader r2r) in D:\git\runtime4\src\coreclr\tools\r2rdump\R2RDump.cs:line 383
   at R2RDump.R2RDump.Run() in D:\git\runtime4\src\coreclr\tools\r2rdump\R2RDump.cs:line 624

Code reference:

/cc @dotnet/crossgen-contrib, @davidwrighton

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions