[Bug 34990] New: Winedbg is unable to set breakpoints when encountering unsupported managed PDB symbol/record types

wine-bugs at winehq.org wine-bugs at winehq.org
Sun Nov 24 06:44:43 CST 2013


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 at winehq.org
        ReportedBy: focht at 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/836b682ed3bff439f1264bc9cee4ecce6ca88bb2:/dlls/dbghelp/symbol.c#l390

--- 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/1d65efe50b7ac88a060defb301b4a5c10587b055:/dlls/dbghelp/msc.c#l1560

-> 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

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list