In fact, it also adds two knobs for FreeBSD native signal handling. It makes FreeBSD behavior similar to Linux, but my experiments demonstrated with absolute certainty that turning them by default is out of question. I believe it is still useful to have these knobs available to application porters to confirm that some code expects Linux behavior and needs porting.
- Make an option to queue ignored signals instead of dropping them at the moment of generation. This is the most problematic case, lots of code is aware of the differences there, and it manifests itself e.g. in the handling of blocked SIGCHLD.
- Make an option for waitpid6(2) and related syscalls to not consume siginfo for queued SIGCHLD from stop events. Apparently Linux/glibc expect that after wait(2), sigtimedwait(SIGCHLD) still returns siginfo for the live process. We have the behavior where wait(2) consumes siginfo, from the inception.
For Linux, I added sysent flags to request the changed behavior unconditionally.
Also, there is a fix for sigtimedwait()/sigwaitinfo() to never restart.
Reported by: dchagin