> 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
Larry Cable has updated the pull request incrementally with one additional commit since the last revision: Update src/jdk.attach/macosx/native/libattach/VirtualMachineImpl.c closing the stable door after the horse has bolted Co-authored-by: David Holmes <62092539+dholmes-...@users.noreply.github.com> ------------- Changes: - all: https://git.openjdk.org/jdk/pull/24085/files - new: https://git.openjdk.org/jdk/pull/24085/files/acd32c1a..9b81d337 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=24085&range=03 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=24085&range=02-03 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 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