Comment 2 for bug 548612

Revision history for this message
Andrew Golding (andy-chicagobikepolo) wrote :

I don't know whether it warrants its own bug, but on a related note, deferrable signals blocked in foreign libraries will cause a sanity check done by interrupts.c to fail.

all_signals_blocked_p will drop SBCL into ldb if only one signal from a set is blocked. This is a problem for programs using foreign libraries that may block signals during a function call (libpq's PQsendQuery will lead to sigpipe being blocked is how I stumbled upon this). The workaround right now is to block all deferrable signals during foreign function calls, but I would rather have a way to somehow signify to SBCL that I expect sigpipe (or any deferrable signal) to be blocked by a foreign function call, but other signals should make their way back to SBCL.