Nevertheless, if the signal handler runs in a random thread and you
raise an exception there, wouldn't that be a problem - shouldn't your
exception should go predictably into a particular thread such as the
primordial thread?
In general you're right. On unix it's up to the application programmer. If you use signals other
than a simple things (like print messages and exit), you want to set up signal masks so that
signals are blocked except one designated thread.
Whether the srfi should specify that as a default or leave it to the programmer is another question.
Because of the "delayed" handling semantics in Scheme signal handlers, I made such behavior
default in Gauche. But I'm not sure how other implementations are handling it.