Re: Signal handling and system calls Lassi Kortela 12 May 2019 08:46 UTC

>     Note that if you want otherwise, that is, you don't
>     want to restart the syscall, you can just throw your own exception
>     from the signal handler.

If you throw an exception from the signal handler, which thread is that
exception raised in? If we always run a Scheme signal handler in the
main thread, or let Unix pick a thread at random, in either case it can
be a different thread than the one that was running when we got the signal.

> There are other cases as well: if read() is interrupted after some bytes
> have been read,
> you need to increment the buffer pointer and decrement the length.

Don't read() and similar syscalls just return -1 bytes read and set
errno to EINTR? I wasn't aware that they'd return partial data when
interrupted by a signal.