dotnet / symstore

Implements API for retrieval of symbols and other debug artifacts from symbol store.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

dotnet-symbol can't process Windows `Heap` type mini-dumps

mikem8361 opened this issue · comments

It always displays the below error message:

dotnet-symbol -d -o c:\temp\symout c:\temp\cdb.webapp.dmp
Downloading from http://msdl.microsoft.com/download/symbols/
Writing files to c:\temp\symout
ERROR: Unable to read bytes at offset 0x0

The reason dotnet-symbol can't load .NET Core Windows mini-dumps is that module headers are not in the image for "heap" dumps. VS and cdb/windbg can load these dumps just fine because it finds/downloads the module and maps it into the address space:

0:024> db 00007ff6`2e550000
SYMSRV:  BYINDEX: 0x8
         C:\ProgramData\dbg\sym
         dotnet.exe
         5D7BB03A26000
SYMSRV:  PATH: C:\ProgramData\dbg\sym\dotnet.exe\5D7BB03A26000\dotnet.exe
SYMSRV:  RESULT: 0x00000000
DBGHELP: C:\ProgramData\dbg\sym\dotnet.exe\5D7BB03A26000\dotnet.exe - OK
DBGENG:  C:\ProgramData\dbg\sym\dotnet.exe\5D7BB03A26000\dotnet.exe - Mapped image memory
00007ff6`2e550000  4d 5a 90 00 03 00 00 00-04 00 00 00 ff ff 00 00  MZ..............
00007ff6`2e550010  b8 00 00 00 00 00 00 00-40 00 00 00 00 00 00 00  ........@.......
00007ff6`2e550020  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
00007ff6`2e550030  00 00 00 00 00 00 00 00-00 00 00 00 f0 00 00 00  ................
00007ff6`2e550040  0e 1f ba 0e 00 b4 09 cd-21 b8 01 4c cd 21 54 68  ........!..L.!Th
00007ff6`2e550050  69 73 20 70 72 6f 67 72-61 6d 20 63 61 6e 6e 6f  is program canno
00007ff6`2e550060  74 20 62 65 20 72 75 6e-20 69 6e 20 44 4f 53 20  t be run in DOS
00007ff6`2e550070  6d 6f 64 65 2e 0d 0d 0a-24 00 00 00 00 00 00 00  mode....$.......

The reason the minidump tests didn't catch is that the test dumps are full desktop .NET dumps that include everything pretty much. They were created a very long time ago.

Now that dotnet-dump collect defaults to "full" heaps which includes the module headers, dotnet-symbol works. The smaller heap type (--type Heap) still will have problems but that make this no P1 anymore.

Closing as this is an older issue. Test automation covers heap dumps and we have not had any customer reports of this issue.