On Mon, 6 Jan 2025 04:27:23 GMT, David Holmes <dhol...@openjdk.org> wrote:

>> Could I get a review of this fix to refine the warnings printed by `libjsig` 
>> when using the deprecated `signal()`/`sigset()` functions?
>> 
>> Currently the libjsig library supports chaining `signal()` and `sigset()`. 
>> With these functions being deprecated, `libjsig` warns when a program calls 
>> either function when the it's LD_PRELOADed. The warning is supposed to warn 
>> that when the support for `signal()` and `sigset()` is removed, the 
>> application might stop working as expected.
>> 
>>> VM warning: the use of signal() and sigset() for signal chaining was 
>>> deprecated in version 16.0 and will be removed in a future release. Use 
>>> sigaction() instead.
>> 
>> The warning is however printed in a few cases when its unnecessary, and also 
>> fails to catch some usages where it should be printed. With this fix the 
>> warning is printed (in order as they appear in jsig.c):
>> 1. when `signal()` or `sigset()` is called for a JVM-used signal, after the 
>> JVM has installed its signals
>> 2. when the JVM installs its signals (using `sigaction()`), and libjsig sees 
>> that `signal()` or `sigset()` has been used for a JVM-used signal
>> 
>> ### Changes
>> * The printing is removed from `call_os_signal()`. This warning was only 
>> correct if `signal()` or `sigset()` was called for a JVM-used signal before 
>> the JVM was installed. This is now instead covered by step 1 above.
>> * If the JVM was installed first, the `signal()`/`sigset()` calls were 
>> effectively translated to `sigaction()`, and the warning was _not_ printed. 
>> When the `signal()`/`sigset()` support is dropped, this behaviour will 
>> change and the warning should be printed. This is now covered by step 2.
>> 
>> ## Testing
>> - [x] Test `open/test/hotspot/jtreg/runtime/signal` has added checks for the 
>> deprecation warning, and passes with the fix
>> - [x] Tier1-3 in progress
>
> test/hotspot/jtreg/runtime/signal/SigTestDriver.java line 176:
> 
>> 174:     /**
>> 175:      * Return true for all signals used by the JVM. This only covers the
>> 176:      * case where the JVM is started normally, and not with -Xrs.
> 
> The VM also uses SIGUSR2 (`SR_signum`), SIGINT, and SIGQUIT. Though the 
> latter two only if no `-Xrs` is given.

The test is skipped for SIGUSR2 on Linux and MacOS, and Windows skips all 
signal testing. So I guess that leaves aix, which seems to use 
signals_poxis.cpp... so perhaps the SIGUSR2 test should be skipped for aix too?
But I'll add the signals for clarity.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/22806#discussion_r1905534105

Reply via email to