RFR: 8344671: Few JFR streaming tests fail with application not alive error on MacOS 15

Larry Cable duke at openjdk.org
Wed Mar 26 22:18:05 UTC 2025


on both Linux and MacOS libattach utilizes UNIX signal (QUIT) to cause a target JVM (attachee) to create the socket file used as transport for subsequent jcmds (and other attach based interactions) and to listen upon that for such.

it should be noted that the default behavior for QUIT (if not blocked or caught) is to terminate the signalled process.

during the early lifetime of a JVM, its signal handlers are not yet installed, and thus any signal such as QUIT will cause the
default behavior to occur, in this case the JVM will be terminated.

this is why some tests are failing with "not alive"

the "fix" is similar in nature to that already implemented for linux (however using a different OS dependent mechanism to obtain the attachee JVM's signal masks: sysctl(2)).

the method "checkCatchesAndSendQuitTo" will now obtain the "attachee" JVM signal masks and only kill(QUIT) if the
current masks indicate that the JVM's signals are now being handled.

the behavior in the success case is now identical to the previous implementation, however should the target JVM not 
become "ready" (signal handlers installed) prior to the attach "timeout" occurring the attach operation will throw an
"AttachNotSupportedException" with a suitable error message.

see also: https://bugs.openjdk.org/browse/JDK-8350766

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

Commit messages:
 - JDK-8344671: jcheck whitespace 'nits'
 - JDK-8344671: added stdbool.h and amended exception msg
 - JDK-89344671: fixed some white space issues
 - JDK-8344671: added test to macos attach code to test for signal handler state prior to sending QUIT, this will obviate early JVM termination when not ready to attach

Changes: https://git.openjdk.org/jdk/pull/24085/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=24085&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8344671
  Stats: 58 lines in 2 files changed: 45 ins; 0 del; 13 mod
  Patch: https://git.openjdk.org/jdk/pull/24085.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/24085/head:pull/24085

PR: https://git.openjdk.org/jdk/pull/24085


More information about the serviceability-dev mailing list