SIGFPE trapping on HPPA (was: Yorick FTBFS: DM needs access to HPPA machine)
[1] http://packages.debian.org/sid/yorick
[2] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=559406
Hello,
Thanks to access to Frans I have been able to test a little bit more
this issue.
It turns out the Yorick code is able to trap SIGFPE when it is
triggered by an integer division (1/0) but not when it is triggered by
a floating point division (1./0.).
In the former case, Yorick correctly signals the exception to the user
with a Yorick error message and stops to wait for input, whereas in
the latter it just dies with the single line "Floating point exception".
Under some circumstances (when and integer SIGFPE has been raised
previously), I have been able to have my handler output a short
message, but then it loops (this short message is repeated
indefinitely). Calling feclearexcepts() before outputting this message
did not help: when attempting a floating-point division by zero,
either yorick dies or the handler loops. The first three lines of the
handler on this test case are:
feclearexcept(FE_ALL_EXCEPT);
printf("in u_sigfpe\n");
fflush(stdout);
The handler is setup using signal(2):
signal(SIGFPE, &u_sigfpe)
HPPA is the only architecture so far which exhibits this behaviour.
Does anyone has an idea of what I could do to fix this? Is there
something specific in the way HPPA handles SIGFPE trapping? Why is it
different between integer SIGFPE and floating SIGFPE?
Best regards, Thibaut.
Reply to: