commit
78a8ef47c4d92b7680c52a85f80a81e29da86bb9 inadvertently removed
the SA_RESTART flag from the sigaction for the internal signal handler
used by __synccall for broadcasting. as a result, programs which did
not use interrupting signals but which used set*id() in a
multithreaded context could wrongly observe EINTR errors they're not
prepared to handle.
int cs, i, r, pid, self;;
DIR dir = {0};
struct dirent *de;
- struct sigaction sa = { .sa_flags = 0, .sa_handler = handler };
+ struct sigaction sa = { .sa_flags = SA_RESTART, .sa_handler = handler };
struct chain *cp, *next;
struct timespec ts;