http://bugs.winehq.org/show_bug.cgi?id=27468
--- Comment #29 from Qian Hong fracting@gmail.com 2012-02-06 10:53:33 CST --- (In reply to comment #28)
Hello, retest with latest git:
This bug can be reproduced if wine is builded with CFLAGS="-O2" or CFLAGS="-O1", CFLAGS="-O2" is used by the Ubuntu packager. I can't reproduce the bug if wine is builded with CFLAGS="-O0"
wine-1.4-rc2
Hello, QQ.exe try to call call_hook_proc() function when clicking on the password form, however, call_hook_proc in hook.c is missing when CFLAGS="-g -O2"
--- snip --- WineDbg starting on pid 0023 start_process () at /home/fracting/wine-git/dlls/kernel32/process.c:1083 0x7ed80e53 start_process+0x53 [/home/fracting/wine-git/dlls/kernel32/process.c:1083] in kernel32: movl %edi,0x4(%esp) 1083 return call_process_entry( peb, entry ); Wine-dbg>b call_hook_proc fixme:dbghelp_dwarf:dwarf2_parse_variable Unsupported constant (parameter) pEncodePara in function fixme:dbghelp_dwarf:dwarf2_parse_variable Unsupported constant (parameter) dwFlags in function fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9e fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9e fixme:dbghelp_dwarf:compute_location Only supporting one reg (edi/24 -> -2) No symbols found for call_hook_proc Unable to add breakpoint, will check again when a new DLL is loaded --- snip ---
A dirty workaround is removing the "static" before call_hook_proc, another way of workaround is adding below line in the call_hook() function: TRACE("call_hook_proc is %p\n", call_hook_proc);
With any of the workaround, I can get the call_hook_proc symbol in winedbg again, and the crash disappear.
I don't have enough knowledge to fix this bug, is it a bug of winegcc or a bug of hook.c? Great appreciating if anyone take this bug :)