http://bugs.winehq.org/show_bug.cgi?id=15338
Arno Schuring aelschuring@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords|regression |
--- Comment #8 from Arno Schuring aelschuring@hotmail.com 2008-09-26 12:27:10 --- ok, I've gotten further and I do not believe this is a regression in Wine. Arguably, it's still a bug because the exception handler seems to be tripping over itself, until it runs out of stack space.
I've built several old versions from git, with both gcc-4.1 and gcc-4.2. The results are consistent between different versions of gcc, and between all wine versions tested. I have found that this only appears when I'm using the ati X.org driver, and does not appear when I switch to fglrx. Other factors (WM, sound system) do not appear to have an effect.
My results: 0.9.50 and 0.9.52 have no wineboot executable, so I have used wineprefix to populate a new prefix. Both give several backtraces but I'm having a hard time taking them serious. The last function call in Wine listed is NtSetInformationKey, in ntdll/reg.c. But this is a stub that only logs a message and returns, and yet it still triggers a page fault. I'll attach a wpc log, as I think it's still the same error, but the stack trace seems tainted.
0.9.60 does have a wineboot executable, and it faults in the same way as 1.1.5 (but only when I'm using the ati driver). The following is a snippet from a gdb backtrace on wineboot (args /usr/lib/wine/wineboot.exe.so -u). Note that the end of the stack trace looks a lot like the one from 0.9.52 (but it lists NtTerminateProcess instead of NtSetInformationKey):
What I think is happening, is that libGL does a function call to the X.org driver. The ati driver gives an unexpected response, and libGL causes a segfault. This segfault is then sent to the signal handler of wine, and that causes another segfault, ad nauseam.
Program received signal SIGSEGV, Segmentation fault. 0xb7f09b9d in ?? () from /lib/ld-linux.so.2 (gdb) bt #0 0xb7f09b9d in ?? () from /lib/ld-linux.so.2 #1 0xb7c35cb4 in ?? () from /lib/tls/i686/cmov/libdl.so.2 #2 0xb7f045c6 in ?? () from /lib/ld-linux.so.2 #3 0xb7c362bc in ?? () from /lib/tls/i686/cmov/libdl.so.2 #4 0xb7c35cea in dlclose () from /lib/tls/i686/cmov/libdl.so.2 #5 0x7e68d7bd in ?? () from /usr/lib/libGL.so.1 #6 0x7e66d84a in ?? () from /usr/lib/libGL.so.1 #7 0x7e66f924 in ?? () from /usr/lib/libGL.so.1 #8 0x7e668ba4 in ?? () from /usr/lib/libGL.so.1 #9 0x7e6ab9bc in ?? () from /usr/lib/libGL.so.1 #10 0xb7f04fcf in ?? () from /lib/ld-linux.so.2 #11 0xb7c67084 in exit () from /lib/tls/i686/cmov/libc.so.6 #12 0x7bc51e50 in NtTerminateProcess () from /usr/bin/../lib/wine/ntdll.dll.so #13 0x7b87462f in ExitProcess () from /usr/bin/../lib/wine/kernel32.dll.so #14 0x7fd195aa in ?? () from /tmp/test/dosdevices/z:/usr/lib/wine/wineboot.exe.so #15 0x7b877b37 in ?? () from /usr/bin/../lib/wine/kernel32.dll.so #16 0xb7dc59d7 in wine_switch_to_stack () from /usr/bin/../lib/libwine.so.1 (gdb) c Continuing.
Program received signal SIGSEGV, Segmentation fault. 0x7eab66d0 in ?? () (gdb) bt #0 0x7eab66d0 in ?? () #1 0x7bc3b929 in __regs_RtlRaiseException () from /usr/bin/../lib/wine/ntdll.dll.so #2 0x7bc65bec in ?? () from /usr/bin/../lib/wine/ntdll.dll.so #3 0xdeadbabe in ?? () #4 0xb7c35cb4 in ?? () from /lib/tls/i686/cmov/libdl.so.2 #5 0xb7f045c6 in ?? () from /lib/ld-linux.so.2 #6 0xb7c362bc in ?? () from /lib/tls/i686/cmov/libdl.so.2 #7 0xb7c35cea in dlclose () from /lib/tls/i686/cmov/libdl.so.2 [...]