Hi,
after this function
SCM_PROC(s_segfault, "segfault", 0, 0, 0, sim_segfault);
SCM
sim_segfault ()
{
*(int *)0 = 0;
return SCM_UNSPECIFIED;
}
has been added to libguile, I get this behaviour
guile> (segfault)
<hang>
Guile is in a loop, calling take_signal, marking the signal_async, and
then returning from the signal handler only to get the sig11 again,
without making any progress.
I don't know enough about Unix signals, and much less about how Guile
handles Unix signals, to know what to do about this. I don't think
that Guile has always behaved in this way, but I can't say for sure.
I think that Guile should not return from its signal handler for
non-continueable signals, like SIGSEGV, SIGILL and SIGBUS. It should
directly throw to wherever is appropriate.