http://bugs.winehq.org/show_bug.cgi?id=14229
Summary: winedbg can't dump stack of functions that take float args? Product: Wine Version: 1.0.0 Platform: Other OS/Version: other Status: NEW Severity: normal Priority: P2 Component: dbghelp AssignedTo: wine-bugs@winehq.org ReportedBy: dank@kegel.com
While running a real app, I hit a breakpoint, and the stack tracer had trouble, both in parsing the .pdb file, and in printing the argument of a function that takes a float:
=>1 0x7b83d7c1 DebugBreak+0x3() [/data/dkegel/bitwagon/po49996-2008-06-30/wine-1.0/dlls/kernel32/../../include/winternl.h:1828] in kernel32 (0x0033a324) fixme:dbghelp_msc:codeview_fetch_type Couldn't load forward type df73 fixme:dbghelp_msc:codeview_snarf Unsupported symbol id 1012 fixme:dbghelp_msc:dump 00000000: 1e 00 12 10 68 00 00 00 40 00 00 00 28 00 00 00 ....h...@...(... fixme:dbghelp_msc:dump 00000010: 0c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ <snip> fixme:dbghelp_msc:codeview_snarf Unsupported symbol id 1012 fixme:dbghelp_msc:dump 00000000: 1e 00 12 10 4c 00 00 00 40 00 00 00 0c 00 00 00 ....L...@....... fixme:dbghelp_msc:dump 00000010: 0c 00 00 00 00 00 00 00 00 00 20 00 00 00 00 00 .......... ..... 2 0x0097eb5e ytDebug::Assert_+0x3e(l=0x70a, f=0x1407f00) [...\yt.cpp:42] in theapp_d (0x0033a378) 3 0x009c2860 ytApp::SetVersion+0x50(version= Needing an integral value
The function ytApp::SetVersion has prototype void ytApp::SetVersion(real32 version);
This app was compiled with Visual C++ 6.
The version of wine is 1.0 plus a few patches that probably aren't involved.
http://bugs.winehq.org/show_bug.cgi?id=14229
--- Comment #1 from Dan Kegel dank@kegel.com 2008-07-01 19:07:36 --- Created an attachment (id=14515) --> (http://bugs.winehq.org/attachment.cgi?id=14515) Log of running sample executable
http://bugs.winehq.org/show_bug.cgi?id=14229
--- Comment #2 from Dan Kegel dank@kegel.com 2008-07-01 19:10:42 --- Created an attachment (id=14516) --> (http://bugs.winehq.org/attachment.cgi?id=14516) Source and executable for tiny demo program
Simple test app source and binary. The app source is:
int demofunc(float arg1) { DebugBreak(); printf("arg1 is %f\n", arg1); return (int) arg1; }
int main(int argc, char* argv[]) { printf("Hello World! %d\n", demofunc((float)argc)); return 0; }
and was compiled in wine in visual c++ 6.
http://bugs.winehq.org/show_bug.cgi?id=14229
--- Comment #3 from Dan Kegel dank@kegel.com 2008-07-03 09:10:00 --- Same thing for doubles.
http://bugs.winehq.org/show_bug.cgi?id=14229
--- Comment #4 from Dan Kegel dank@kegel.com 2008-07-03 12:17:56 --- Loading either of the apps I've tried so far in winedbg and then doing
Wine-dbg>disas _chkstk
yields a similar error,
Needing an integral value
http://bugs.winehq.org/show_bug.cgi?id=14229
Eric Pouech eric.pouech@orange.fr changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |eric.pouech@orange.fr
--- Comment #5 from Eric Pouech eric.pouech@orange.fr 2008-07-04 14:31:21 --- first of all, dbghelp needs to find the libcd.pdb file that comes with the compiler. it should help a lot in the process. The best solution is to add the directory of where this file is to the _NT_SYMBOL_PATH environment variable the repost the outcome I agree the error message should be clearer (or even more precisely, there should be an error message)
A+
http://bugs.winehq.org/show_bug.cgi?id=14229
Dan Kegel dank@kegel.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download
--- Comment #6 from Dan Kegel dank@kegel.com 2008-07-08 18:51:37 --- Didn't help. I copied all the pdbs from both the app and visual C++ 6 itself (including libcd.pdb) into c:\pdbs, and ran the test app as _NT_SYMBOL_PATH='C:\pdbs' wine floatparm.exe Same output. WINEDEBUG=+environ showed that that environment variable wasn't even being read.
Running in winedbg, the environment variable is actually read, and both floatparm.pdb, vc60.pdb, and libcd.pdb are opened, but bt still shows 2 0x00401040 demofunc+0x20(arg1= Needing an integral value
Next move?
http://bugs.winehq.org/show_bug.cgi?id=14229
--- Comment #7 from Eric Pouech eric.pouech@orange.fr 2008-07-09 15:01:16 --- it's "normal" that you don't get the correct result when winedbg is launched upon the fault as it doesn't inherit the faulty program's env settings... can you send me both the libcd.pdb file and the +dbghelp_msc trace (especially I want to ensure that you actually load the right libcd file with the correct timestamp) and what else fails then afterwards A+
http://bugs.winehq.org/show_bug.cgi?id=14229
--- Comment #8 from Eric Pouech eric.pouech@orange.fr 2008-09-13 15:18:07 --- the float issue should be fixed in current git
http://bugs.winehq.org/show_bug.cgi?id=14229
Eric Pouech eric.pouech@orange.fr changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED
--- Comment #9 from Eric Pouech eric.pouech@orange.fr 2008-10-20 14:39:09 --- and current git has code to let load debug info which is unmatched to the module info. You have to turn this feature on with the following WineDbg command: set ! module + it's off by default so changing resolution to fixed A+
http://bugs.winehq.org/show_bug.cgi?id=14229
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #10 from Alexandre Julliard julliard@winehq.org 2008-10-24 11:13:40 --- Closing bugs fixed in 1.1.7.