I did a git bisect to test the "bt all" issue and narrowed down the issue:
d29c6ead9280a174fa07ec7d5cd07293c3f7832d is the first bad commit commit d29c6ead9280a174fa07ec7d5cd07293c3f7832d Author: Eric Pouech eric.pouech@orange.fr Date: Tue Mar 30 21:37:01 2010 +0200
winedbg: Store the CONTEXT in each stack frame to enable register access in the non topmost frames.
I used the multithreaded test program from bug 20617 http://bugs.winehq.org/show_bug.cgi?id=20617 to test this problem.
This is what a failure looks like: $ ./wine winedbg MultipleThreads.exe ... Wine-dbg>bt all ... Backtracing for thread 0020 in process 0018 (Z:\MultipleThreads.exe): Backtrace: =>0 0xf77fd42e (0x0033f7a8) 1 0x00190050 (0x0018004f)
Backtracing for thread 001f in process 0018 (Z:\MultipleThreads.exe): Backtrace: =>0 0xf77fd42e (0x0033f7a8) 1 0x00190050 (0x0018004f)
Backtracing for thread 001e in process 0018 (Z:\MultipleThreads.exe): Backtrace: =>0 0xf77fd42e (0x0033f7a8) 1 0x00190050 (0x0018004f)
Backtracing for thread 0019 in process 0018 (Z:\MultipleThreads.exe): Backtrace: =>0 0xf77fd42e (0x0033f7a8) 1 0x00190050 (0x0018004f) 0xf776b42e: jmp 0xf776b423 ...
A proper backtrace should look something like this: ... Backtracing for thread 002e in process 0028 (Z:\U_Drive\Projects\WineDbg_TestCases\Release\MultipleThreads.exe): Backtrace: =>0 0xf7711430 (0x0081ea04) 1 0x7ee155f4 SleepEx+0x2a(timeout=0x00c8, alertable=0) [/source/wine/dlls/kernel32/sync.c:108] in kernel32 (0x0081ea34) 2 0x7ee155c0 Sleep+0x25(timeout=0x00c8) [/source/wine/dlls/kernel32/sync.c:97] in kernel32 (0x0081ea54) 3 0x0040103a Boom::crash_func+0x3a(void_ptr=0x33fdb0) [u:\projects\winedbg_testcases\multiplethreads\multiplethreads.cpp:25] in multiplethreads (0x0081ea68) 4 0x7efbad44 call_thread_func+0xc() in ntdll (0x0081ea78) 5 0x7efbad82 call_thread_entry_point+0x34(entry=0x401000, arg=0x33fdb0) [/source/wine/dlls/ntdll/signal_i386.c:2457] in ntdll (0x0081eb58) 6 0x7efc19ea RtlCreateUserThread(process=0x33fdb0, descr=(nil), suspended=10, stack_addr=0x0(nil), stack_reserve=0x81eb7c, stack_commit=0x81ef7c, start=(nil), param=0x0(nil), handle_ptr=(nil), id=(nil)) [/source/wine/dlls/ntdll/thread.c:411] in ntdll (0x0081f398) 7 0xf756f92f start_thread+0xbf() in libpthread.so.0 (0x0081f498)
Backtracing for thread 002d in process 0028 (Z:\U_Drive\Projects\WineDbg_TestCases\Release\MultipleThreads.exe): Backtrace: =>0 0xf7711430 (0x0071ea04) 1 0x7ee155f4 SleepEx+0x2a(timeout=0x00c8, alertable=0) [/source/wine/dlls/kernel32/sync.c:108] in kernel32 (0x0071ea34) 2 0x7ee155c0 Sleep+0x25(timeout=0x00c8) [/source/wine/dlls/kernel32/sync.c:97] in kernel32 (0x0071ea54) 3 0x0040103a Boom::crash_func+0x3a(void_ptr=0x33fda4) [u:\projects\winedbg_testcases\multiplethreads\multiplethreads.cpp:25] in multiplethreads (0x0071ea68) 4 0x7efbad44 call_thread_func+0xc() in ntdll (0x0071ea78) 5 0x7efbad82 call_thread_entry_point+0x34(entry=0x401000, arg=0x33fda4) [/source/wine/dlls/ntdll/signal_i386.c:2457] in ntdll (0x0071eb58) 6 0x7efc19ea RtlCreateUserThread(process=0x33fda4, descr=(nil), suspended=10, stack_addr=0x0(nil), stack_reserve=0x71eb7c, stack_commit=0x71ef7c, start=(nil), param=0x0(nil), handle_ptr=(nil), id=(nil)) [/source/wine/dlls/ntdll/thread.c:411] in ntdll (0x0071f398) 7 0xf756f92f start_thread+0xbf() in libpthread.so.0 (0x0071f498)
Backtracing for thread 002c in process 0028 (Z:\U_Drive\Projects\WineDbg_TestCases\Release\MultipleThreads.exe): Backtrace: =>0 0x0040105b Boom::crash_func+0x5b(void_ptr=0x33fd98) [u:\projects\winedbg_testcases\multiplethreads\multiplethreads.cpp:29] in multiplethreads (0x0061ea68) 1 0x7efbad44 call_thread_func+0xc() in ntdll (0x0061ea78) 2 0x7efbad82 call_thread_entry_point+0x34(entry=0x401000, arg=0x33fd98) [/source/wine/dlls/ntdll/signal_i386.c:2457] in ntdll (0x0061eb58) 3 0x7efc19ea RtlCreateUserThread(process=0x33fd98, descr=(nil), suspended=0, stack_addr=0x0(nil), stack_reserve=0x61eb7c, stack_commit=0x61ef7c, start=(nil), param=0x0(nil), handle_ptr=(nil), id=(nil)) [/source/wine/dlls/ntdll/thread.c:411] in ntdll (0x0061f398) 4 0xf756f92f start_thread+0xbf() in libpthread.so.0 (0x0061f498)
Backtracing for thread 0029 in process 0028 (Z:\U_Drive\Projects\WineDbg_TestCases\Release\MultipleThreads.exe): Backtrace: =>0 0xf7711430 (0x0033fcfc) 1 0x7ee155f4 SleepEx+0x2a(timeout=0x00f0, alertable=0) [/source/wine/dlls/kernel32/sync.c:108] in kernel32 (0x0033fd2c) 2 0x7ee155c0 Sleep+0x25(timeout=0x00f0) [/source/wine/dlls/kernel32/sync.c:97] in kernel32 (0x0033fd4c) 3 0x0040103a Boom::crash_func+0x3a(void_ptr=0x33fd8c) [u:\projects\winedbg_testcases\multiplethreads\multiplethreads.cpp:25] in multiplethreads (0x0033fd60) 4 0x0040112e main+0xae(argc=0x0001, argv=0x40c338) [u:\projects\winedbg_testcases\multiplethreads\multiplethreads.cpp:65] in multiplethreads (0x0033fdbc) 5 0x0040139c mainCRTStartup+0x173() [f:\vs70builds\6030\vc\crtbld\crt\src\crt0.c:259] in multiplethreads (0x0033fe98) 6 0x7ee05b3c start_process+0x137(peb=0x7ffdf000) [/source/wine/dlls/kernel32/process.c:988] in kernel32 (0x0033fed8) 7 0x7efbad44 call_thread_func+0xc() in ntdll (0x0033fee8) 8 0x7efbad82 call_thread_entry_point+0x34(entry=0x7ee05a05, arg=0x7ffdf000) [/source/wine/dlls/ntdll/signal_i386.c:2457] in ntdll (0x0033ffc8) 9 0x7ef93ecf LdrInitializeThunk(kernel_start=0x7ffdf000, unknown2=0, unknown3=0, unknown4=0) [/source/wine/dlls/ntdll/loader.c:2621] in ntdll (0x0033ffe8) 0xf779b42e: jmp 0xf779b423 ...