|
From: Julian S. <js...@ac...> - 2006-03-07 21:15:12
|
> When the first (have_fp) SIGILL is generated, the OS (or glibc/gcc or > other) blocks subsequent SIGILL's while the registered handler > function (handler_sigill) is running, with the intent of unblocking > signals on return from the function. In the testcase (and m_machine.c) > the handler never returns, but longjmps out. This has the effect of > leaving signals blocked. Yes. I eventually discovered this too. It is fixed in svn rev 5662 (for the trunk) and 5703 (3.1 branch). > My fix was to unmask symbols after return from longjmp, but you could > also set up the hander to not block symbols using SA_NODEFER. 5662/5703 use the SA_NODEFER solution. It would be good if you could check out and test the 3.1 branch and/or the trunk (preferably both) to check they work for you. It's easy: svn co svn://svn.valgrind.org/valgrind/trunk (for the trunk) or svn co svn://svn.valgrind.org/valgrind/branches/VALGRIND_3_1_BRANCH then cd into the directory you get ./autogen.sh then configure/build in the normal way. J |