http://bugs.winehq.org/show_bug.cgi?id=18628
Summary: Assertion failure when setting a breakpoint (x86_64 host) Product: Wine Version: 1.1.22 Platform: PC-x86-64 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: dbghelp AssignedTo: wine-bugs@winehq.org ReportedBy: sylvain.pasche@gmail.com
Wine crashes when trying to set breakpoints from winedbg, or when trying to run winedbg with --gdb.
I've built wine from git (version wine-1.1.22-51-g85b6189) on Ubuntu 9.04 x86_64.
$ winedbg notepad
Wine-dbg>b GetMessageW fixme:dbghelp:elf_new_wine_thunks Duplicate in L"shell32<elf>": __stat<7ec53a10-00000032> stat<7ec53a10-32> fixme:dbghelp:elf_new_wine_thunks Duplicate in L"shell32<elf>": lstat<7ec53a50-00000032> __lstat<7ec53a50-32> fixme:dbghelp_dwarf:dwarf2_parse_variable Unsupported form for const value zero (a) [...] fixme:dbghelp_dwarf:dwarf2_parse_variable Unsupported form for const value one (a) fixme:dbghelp_dwarf:compute_location Unhandled attr op: e0 ../../../wine-git/dlls/dbghelp/dwarf.c:1355: dwarf2_parse_variable: Assertion `subpgm->func' failed.
Exception 80000101
Then I can continue, but the breakpoint is never hit.
When I try to run with --gdb, I'm getting a similar assertion:
winedbg --gdb --no-start notepad 0016:0017: create process 'C:\windows\system32\notepad.exe'/0x110660 @0x7ee3d388 (0<0>) fixme:dbghelp_dwarf:compute_location Unhandled attr op: e0 ../../../wine-git/dlls/dbghelp/dwarf.c:1355: dwarf2_parse_variable: Assertion `subpgm->func' failed. wine: Assertion failed at address 0xf7f99430 (thread 0009), starting debugger...
Then I see the "Program Error" dialog box.
The strange thing is that with the same versions and same OS but i686 architecture, I don't get such assertions. Could gcc/binutils on x86_64 host (i686 target) produce some different debug sections?
http://bugs.winehq.org/show_bug.cgi?id=18628
--- Comment #1 from Antoine Mazeas antoine@karthanis.net 2009-05-26 13:50:38 --- Created an attachment (id=21337) --> (http://bugs.winehq.org/attachment.cgi?id=21337) log of the guild wars autopatcher crash
I'm experiencing this bug as well shile trying to install Guild Wars. The autopatcher starts fine, then begins to download several files, and ends to crash with this error, always at the same point of the install process.
Attached is the log.
http://bugs.winehq.org/show_bug.cgi?id=18628
Antoine Mazeas antoine@karthanis.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |antoine@karthanis.net
http://bugs.winehq.org/show_bug.cgi?id=18628
--- Comment #2 from Sylvain Pasche sylvain.pasche@gmail.com 2009-05-27 10:19:09 --- Antoine, are you also on a 64bit system, with Wine 1.1.22?
http://bugs.winehq.org/show_bug.cgi?id=18628
--- Comment #3 from Antoine Mazeas antoine@karthanis.net 2009-05-27 10:42:48 --- I am:
Ubuntu 9.04 64bits wine 1.1.22
I tried a fresh .wine prefix, but that doesn't help.
http://bugs.winehq.org/show_bug.cgi?id=18628
Sylvain Pasche sylvain.pasche@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|Assertion failure when |Dwarf section in Ubuntu |setting a breakpoint |9.04 libc debug package |(x86_64 host) |fails to parse.
--- Comment #4 from Sylvain Pasche sylvain.pasche@gmail.com 2009-05-27 16:36:35 --- After some digging, this has nothing to do with 64bit or not. The issue is that I have the libc6-dbg package installed, and the Dwarf parser asserts when reading the debug information the .so in that package.
trace:dbghelp:elf_load_file Processing elf file 'L"/lib32/libc.so.6"' at f7cb2000 trace:dbghelp:module_new => ELF f7cb2000-f7e15000 L"/lib32/libc.so.6" warn:dbghelp:elf_check_debug_link Bad CRC for file L"/lib32/libc-2.9.so" (got ee3d02ac while expecting 60b35a44) trace:dbghelp:elf_locate_debug_link Located debug information file libc-2.9.so at L"/usr/lib/debug//lib32/libc-2.9.so"
[...] race:dbghelp_dwarf:dwarf2_parse_variable ctx(0x33ec88,L"libc.so.6"), for debug_info(abbrev:0x5202ac,symt:(nil)) trace:dbghelp_dwarf:dwarf2_fill_attr ref4<0x7d9f> trace:dbghelp_dwarf:dwarf2_fill_attr strp<__libc_errno> fixme:dbghelp_dwarf:compute_location Unhandled attr op: e0 trace:dbghelp_dwarf:dwarf2_parse_variable found parameter __libc_errno (kind=0, offset=2127723594, reg=-1) at ctx(0x33ec88,L"libc.so.6") ../../../wine-git/dlls/dbghelp/dwarf.c:1362: dwarf2_parse_variable: Assertion `subpgm->func' failed.
My guess is that the issue is a consequence of the unknown Dwarf op 0xe0. This one seems to be a GNU extension (from gcc-4.3.3/gcc/dwarf2.h):
/* GNU extensions. */ DW_OP_GNU_push_tls_address = 0xe0,
readelf --debug-dump /usr/lib/debug/lib/libc-2.9.so
<1><8227>: Abbrev Number: 14 (DW_TAG_variable) <8228> DW_AT_name : (indirect string, offset: 0x2700): __libc_errno <822c> DW_AT_decl_file : 4 <822d> DW_AT_decl_line : 33 <822e> DW_AT_type : <0x810f> <8232> DW_AT_external : 1 <8233> DW_AT_location : 10 byte block: 3 10 0 0 0 0 0 0 0 e0 (DW_OP_addr: 10; DW_OP_GNU_push_tls_address or DW_OP_HP_unknown)
http://bugs.winehq.org/show_bug.cgi?id=18628
cpt_mocha@yahoo.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |cpt_mocha@yahoo.com
--- Comment #5 from cpt_mocha@yahoo.com 2009-05-29 02:59:30 --- Just wanted to say that I also had this problem after upgrading to Jaunty, using version 1.1.22 from the Wine repos. All my programs including winecfg were throwing tons of "dwarf.c:1355: dwarf2_parse_variable: Assertion `subpgm->func' failed" errors. I removed libc6-dbg from my system and all is well again.
http://bugs.winehq.org/show_bug.cgi?id=18628
Eric Pouech eric.pouech@orange.fr changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |eric.pouech@orange.fr
--- Comment #6 from Eric Pouech eric.pouech@orange.fr 2009-05-31 02:14:34 --- should be fixed in Git tree by now could you retry ?
http://bugs.winehq.org/show_bug.cgi?id=18628
Sylvain Pasche sylvain.pasche@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |FIXED
--- Comment #7 from Sylvain Pasche sylvain.pasche@gmail.com 2009-05-31 08:46:39 --- Yes, that's now fixed, thanks.
That's not totally related, but I'm getting lots of fixme messages when the symbols are read:
fixme:dbghelp_dwarf:dwarf2_parse_variable Unsupported form for const value one (a) fixme:dbghelp_dwarf:dwarf2_parse_variable Unsupported form for const value two (a) fixme:dbghelp_dwarf:dwarf2_parse_variable Unsupported form for const value erx (a) [...] fixme:dbghelp_dwarf:compute_location Unhandled attr op: e0 fixme:dbghelp_dwarf:compute_location Unhandled attr op: e0 fixme:dbghelp_dwarf:compute_location Unhandled attr op: e0 [...]
Should I file a new bug for this?
The "Unsupported form for const" message is a DW_FORM_block1 attribute that falls through the switch in dwarf2_parse_variable.
The "Unhandled attr op" message is about a GNU extension (DW_OP_GNU_push_tls_address opcode). Maybe this one should just be ignored (or better, ignore all the extensions if that's possible).
http://bugs.winehq.org/show_bug.cgi?id=18628
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #8 from Alexandre Julliard julliard@winehq.org 2009-06-05 12:46:57 --- Closing bugs fixed in 1.1.23.