The sigtimedwait entry still said SIGPIPE has no host equivalent, and
the sigaction entry left it out of the signals whose handlers run.
guest_broken_pipe now also covers VLC's drain: with a handler and 13
blocked, sigtimedwait takes the 13 a failed write leaves pending; with
13 ignored, nothing is pending.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
A write to a socket or pipe whose reader is gone fails with EPIPE and
raises SIGPIPE. Guest signal numbers reach the host only for 2, 4, 6, 8,
11 and 15, so a guest's signal(SIGPIPE, SIG_IGN) or SIGPIPE handler was
recorded but never applied: the host's SIGPIPE kept its default action
and ended the process on the first such write. Programs that ignore
SIGPIPE so that a dropped connection is not fatal, such as the VLC port,
were killed instead.
Guest signal 13 is now the host's SIGPIPE outside Windows, like the other
six. Ignoring it makes the write return EPIPE, a handler runs, and while
it is blocked under a handler it stays pending until unblocked. As for the
other mapped signals, blocking it under the default disposition does not
stop the host's default action.
GuestSignals used 13 as an example of a signal without a host
equivalent; it uses 12 now.
Co-Authored-By: Claude Opus 5.5 <[email protected]>