Summary
-------
Deprecate the archaic signal-chaining interfaces sigset and signal, with a view to remove them in JDK 17.
Problem
-------
The signal-chaining facility was introduced in JDK 1.4 nearly 20 years ago and supported three different Linux signal API's: `sigset`, `signal` and `sigaction`:
https://docs.oracle.com/javase/8/docs/technotes/guides/vm/signal-chaining.html
Only `sigaction` is a Posix supported API for multi-threaded processes, that we can use cross-platform. Both `signal` and `sigset` are obsolete and have undefined behaviour in a multi-threaded process. From the Linux man pages:
> `sigset`: This API is obsolete: new applications should use the POSIX signal API (`sigaction`(2), `sigprocmask`(2), etc.)
> `signal`: The behavior of `signal()` varies across UNIX versions, and has also varied historically across different versions of Linux. Avoid its use: use `sigaction`(2) instead.
Solution
--------
Deprecate the use of `sigset` and `signal` with a view to removing them in JDK 17.
Specification
-------------
There is no actual specification for this functionality, only the documentation in the VM guide which we no longer seem to produce.
If the user invokes the `sigset` or `signal` functions in the signal chaining library, then we will issue a deprecation warning. e.g.
> `The use of the sigset function is deprecated and will be removed in a future release. Use the sigaction function instead.`