http://bugs.winehq.org/show_bug.cgi?id=34990
Bug #: 34990 Summary: Winedbg is unable to set breakpoints when encountering unsupported managed PDB symbol/record types Product: Wine Version: 1.7.7 Platform: x86 OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: dbghelp AssignedTo: wine-bugs@winehq.org ReportedBy: focht@gmx.net Classification: Unclassified
Hello folks,
although Winedbg is not useful for the managed part it might be for getting to a specific failure point.
--- snip --- $ WINEDEBUG=+dbghelp_msc,+dbghelp winedbg ... <attach> ... $ b MessageBoxW ... trace:dbghelp_msc:codeview_process_info Processing signature RSDS trace:dbghelp_msc:codeview_process_info Got RSDS type of PDB file: guid={28bacf55-dda2-4f32-8975-fe4b6d565a8b} age=00000001 name=D:\Work\academagia\trunk\src\ContentModel\obj\x86\Release\ContentModel.pdb trace:dbghelp_msc:pdb_process_internal Processing PDB file D:\Work\academagia\trunk\src\ContentModel\obj\x86\Release\ContentModel.pdb trace:dbghelp:path_find_symbol_file (pcs = 0x1136e8, full_path = "D:\Work\academagia\trunk\src\ContentModel\obj\x86\Release\ContentModel.pdb", guid = {28bacf55-dda2-4f32-8975-fe4b6d565a8b}, dw1 = 0x00000000, dw2 = 0x00000001, buffer = 0x32bd38) warn:dbghelp_msc:pdb_fetch_file_info Unable to open .PDB file: D:\Work\academagia\trunk\src\ContentModel\obj\x86\Release\ContentModel.pdb trace:dbghelp:SymMatchFileNameW (L"C:\Program Files\Academagia\unins000.dat" L"ContentModel.pdb" (nil) (nil)) trace:dbghelp:SymMatchFileNameW (L"C:\Program Files\Academagia\unins000.exe" L"ContentModel.pdb" (nil) (nil)) trace:dbghelp:SymMatchFileNameW (L"C:\Program Files\Academagia\Academagia Patch 14.txt" L"ContentModel.pdb" (nil) (nil)) trace:dbghelp:SymMatchFileNameW (L"C:\Program Files\Academagia\Academagia.Core.dll" L"ContentModel.pdb" (nil) (nil)) trace:dbghelp:SymMatchFileNameW (L"C:\Program Files\Academagia\Academagia.exe" L"ContentModel.pdb" (nil) (nil)) trace:dbghelp:SymMatchFileNameW (L"C:\Program Files\Academagia\Academagia.ico" L"ContentModel.pdb" (nil) (nil)) trace:dbghelp:SymMatchFileNameW (L"C:\Program Files\Academagia\Academagia.UI.dll" L"ContentModel.pdb" (nil) (nil)) trace:dbghelp:SymMatchFileNameW (L"C:\Program Files\Academagia\Academagia_Manual.pdf" L"ContentModel.pdb" (nil) (nil)) trace:dbghelp:SymMatchFileNameW (L"C:\Program Files\Academagia\AMTempFilesCleaner.exe" L"ContentModel.pdb" (nil) (nil)) trace:dbghelp:SymMatchFileNameW (L"C:\Program Files\Academagia\Castle.DynamicProxy.dll" L"ContentModel.pdb" (nil) (nil)) trace:dbghelp:SymMatchFileNameW (L"C:\Program Files\Academagia\Common.dll" L"ContentModel.pdb" (nil) (nil)) trace:dbghelp:SymMatchFileNameW (L"C:\Program Files\Academagia\config.xml" L"ContentModel.pdb" (nil) (nil)) trace:dbghelp:SymMatchFileNameW (L"C:\Program Files\Academagia\ContentModel.dll" L"ContentModel.pdb" (nil) (nil)) trace:dbghelp:SymMatchFileNameW (L"C:\Program Files\Academagia\ContentModel.pdb" L"ContentModel.pdb" (nil) (nil)) trace:dbghelp_msc:pdb_init PDB(C:\Program Files\Academagia\ContentModel.pdb): "Microsoft C/C++ MSF 7.00\r\n\x1aDS\x00\ trace:dbghelp_msc:pdb_init found DS for C:\Program Files\Academagia\ContentModel.pdb: age=1 guid={28bacf55-dda2-4f32-8975-fe4b6d565a8b} trace:dbghelp_msc:pdb_init PDB(D:\Work\academagia\trunk\src\ContentModel\obj\x86\Release\ContentModel.pdb): "Microsoft C/C++ MSF 7.00\r\n\x1aDS\x00\ trace:dbghelp_msc:pdb_init found DS for D:\Work\academagia\trunk\src\ContentModel\obj\x86\Release\ContentModel.pdb: age=1 guid={28bacf55-dda2-4f32-8975-fe4b6d565a8b} fixme:dbghelp_msc:codeview_snarf sym->generic.id=0x1125, curr_func=(nil) fixme:dbghelp_msc:codeview_snarf sym->generic.id=0x1129, curr_func=(nil) fixme:dbghelp_msc:codeview_snarf Unsupported symbol id 1129 fixme:dbghelp_msc:dump 00000000: 16 00 29 11 00 00 00 00 04 00 00 00 3f 00 30 36 ..).........?.06 fixme:dbghelp_msc:dump 00000010: 30 30 30 33 65 37 00 00 0003e7.. ... <100's of repeats> ... fixme:dbghelp_msc:codeview_snarf sym->generic.id=0x1125, curr_func=(nil) fixme:dbghelp_msc:codeview_snarf sym->generic.id=0x1129, curr_func=(nil) fixme:dbghelp_msc:codeview_snarf Unsupported symbol id 1129 fixme:dbghelp_msc:dump 00000000: 16 00 29 11 00 00 00 00 b0 01 00 00 0e 00 30 36 ..)...........06 fixme:dbghelp_msc:dump 00000010: 30 30 30 31 36 32 00 00 000162.. fixme:dbghelp_msc:codeview_snarf sym->generic.id=0x112a, curr_func=(nil) fixme:dbghelp_msc:codeview_snarf Unsupported symbol id 112a fixme:dbghelp_msc:dump 00000000: 2e 00 2a 11 00 00 00 00 74 01 00 00 00 00 00 00 ..*.....t....... fixme:dbghelp_msc:dump 00000010: 02 00 00 00 00 00 00 00 00 00 00 00 01 00 00 06 ................ fixme:dbghelp_msc:dump 00000020: 00 00 00 00 01 00 00 00 00 4f 6e 53 61 76 65 00 .........OnSave. fixme:dbghelp_msc:codeview_snarf sym->generic.id=0x1103, curr_func=(nil) /home/focht/projects/wine/wine-git/dlls/dbghelp/symbol.c:398: symt_open_func_block: Assertion `func' failed.
Wine-dbg> ... Wine-dbg>info break No breakpoints No watchpoints --- snip ---
Unfortunately just doing assert() isn't useful here. It doesn't give any context hence I added a trace message in caller (see 'fixme:dbghelp_msc:codeview_snarf sym->generic.id=xxx').
Source: http://source.winehq.org/git/wine.git/blob/836b682ed3bff439f1264bc9cee4ecce6...
--- snip --- 390 struct symt_block* symt_open_func_block(struct module* module, 391 struct symt_function* func, 392 struct symt_block* parent_block, 393 unsigned pc, unsigned len) 394 { 395 struct symt_block* block; 396 struct symt** p; 397 398 assert(func); 399 assert(func->symt.tag == SymTagFunction); ... --- snip ---
The code in question: http://source.winehq.org/git/wine.git/blob/1d65efe50b7ac88a060defb301b4a5c10...
-> codeview_snarf
When someone works on it ... you might as well clean up all the whitespace/tab mixups here. That file That file definitely needs more love ;-)
I'd expect that winedbg sets the breakpoint regardless of earlier symbol lookup failure.
Regards
http://bugs.winehq.org/show_bug.cgi?id=34990
--- Comment #1 from Anastasius Focht focht@gmx.net 2013-11-24 07:08:19 CST --- Hello folks,
I found information about PDB support for managed assemblies in the Mono Cecil project:
http://www.mono-project.com/Cecil
https://github.com/jbevain/cecil/wiki/Debug-symbols
The C# code is published under MS-PL (MS public license)
Finding a more or less complete in-depth PDB format documentation is difficult so this might prove a useful resource when adding/improving currently unsupported symbol/record types.
Regards
http://bugs.winehq.org/show_bug.cgi?id=34990
Vincent Povirk madewokherd@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |madewokherd@gmail.com
https://bugs.winehq.org/show_bug.cgi?id=34990
--- Comment #2 from Austin English austinenglish@gmail.com --- Still in 1.7.37.
https://bugs.winehq.org/show_bug.cgi?id=34990
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|Winedbg is unable to set |Winedbg is unable to set |breakpoints when |breakpoints when |encountering unsupported |encountering unsupported |managed PDB symbol/record |managed PDB symbol/record |types |types (S_TOKENREF, | |S_LMANPROC, S_GMANPROC) Keywords| |dotnet
--- Comment #3 from Anastasius Focht focht@gmx.net --- Hello folks,
revisiting, still present.
https://source.winehq.org/git/wine.git/commitdiff/d8a39d40d82eb72fedc3b1818b... ("dbghelp: Add even more symbol types.")
0x1129 -> S_TOKENREF
https://github.com/Microsoft/microsoft-pdb/search?q=S_TOKENREF&unscoped_...
0x112a -> S_GMANPROC
https://github.com/Microsoft/microsoft-pdb/search?q=S_GMANPROC&unscoped_...
https://github.com/Microsoft/microsoft-pdb/search?q=S_LMANPROC&unscoped_...
$ wine --version wine-3.13
Regards
https://bugs.winehq.org/show_bug.cgi?id=34990
NyaMisty misty@misty.moe changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |misty@misty.moe
--- Comment #4 from NyaMisty misty@misty.moe --- Still present in Wine 6.0.1 (Staging)
``` $ wine XXX.exe .... 0024:fixme:dbghelp_msc:codeview_snarf Unsupported symbol id 1129 0024:fixme:dbghelp_msc:dump 00000000: 16 00 29 11 00 00 00 00 ac 0b 00 00 07 00 30 36 ..)...........06 0024:fixme:dbghelp_msc:dump 00000010: 30 30 30 30 34 63 00 00 00004c.. 0024:fixme:dbghelp_msc:codeview_snarf Unsupported symbol id 1129 0024:fixme:dbghelp_msc:dump 00000000: 16 00 29 11 00 00 00 00 04 00 00 00 0c 00 30 36 ..)...........06 0024:fixme:dbghelp_msc:dump 00000010: 30 30 30 30 35 36 00 00 000056.. 0024:fixme:dbghelp_msc:codeview_snarf Unsupported symbol id 112a 0024:fixme:dbghelp_msc:dump 00000000: 2e 00 2a 11 00 00 00 00 9c 01 00 00 00 00 00 00 ..*............. 0024:fixme:dbghelp_msc:dump 00000010: 5a 00 00 00 00 00 00 00 00 00 00 00 01 00 00 06 Z............... 0024:fixme:dbghelp_msc:dump 00000020: 00 00 00 00 01 00 00 00 00 2e 63 74 6f 72 00 00 ..........ctor.. Assertion failed: func, file dlls/dbghelp/symbol.c, line 397
(wine aborted) ```
But deleting *.pdb in directory will allow the program to run normally.