https://bugs.kde.org/show_bug.cgi?id=344139
--- Comment #2 from Austin English <austinengl...@gmail.com> --- To give a bit more info (and for myself in the future ;). This is still present in development wine (wine-1.9.24-105-g1d3b944) and valgrind (valgrind-3.13.0.SVN, #define VGSVN "16171", #define VEXSVN "3285"). It's not reproducible with every wine unit tests. The first case I found was dlls/advapi32/tests/service.c. For info on running wine under valgrind, see: https://wiki.winehq.org/Wine_and_Valgrind my scripts/suppression files are at: https://github.com/austin987/wine_misc/tree/master/valgrind but in short: # get wine/wine_misc repos $ cd wine-valgrind $ ln -s /path/to/wine_misc/valgrind tools/valgrind $ ./configure && make -j8 $ vi tools/valgrind/vg-wrapper.sh # edit paths to wine/valgrind, if needed $ . tools/valgrind/vg-wrapper.sh $ ./wine start /min notepad $ cd dlls/advapi32/tests $ make service.ok # BUG If the bug is present, you should see: ../../../tools/runtest -q -P wine -T ../../.. -M advapi32.dll -p advapi32_test.exe.so service && touch service.ok preloader: Warning: failed to reserve range 00110000-68000000 preloader: Warning: failed to reserve range 7f000000-82000000 err:rpc:I_RpcGetBuffer no binding err:seh:segv_handler Got unexpected trap 0 wine: Unhandled illegal instruction at address 0x7bc280f5 (thread 006d), starting debugger... preloader: Warning: failed to reserve range 00110000-68000000 preloader: Warning: failed to reserve range 7f000000-82000000 the key lines being: err:seh:segv_handler Got unexpected trap 0 wine: Unhandled illegal instruction at address 0x7bc280f5 (thread 006d), starting debugger... at that point, it will hang indefinitely. With a patch from Sebastian (for Wine): diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c index 59dca6c..a8cdb96 100644 --- a/dlls/ntdll/signal_i386.c +++ b/dlls/ntdll/signal_i386.c @@ -2076,6 +2076,15 @@ static void segv_handler( int signal, siginfo_t *siginfo, void *sigcontext ) return; } + if (!get_trap_code(context) && + siginfo->si_addr == (void *)EIP_sig(context) && + *(char *)EIP_sig(context) == 0x36) + { + FIXME("---> working around Valgrind SIGILL exception\n"); + EIP_sig(context)++; + return; + } + /* check for page fault inside the thread stack */ if (get_trap_code(context) == TRAP_x86_PAGEFLT && (char *)siginfo->si_addr >= (char *)NtCurrentTeb()->DeallocationStack && the tests will pass and not hang. -- You are receiving this mail because: You are watching all bug changes.