On Fri, 28 Mar 2025 17:17:01 GMT, Larry Cable <d...@openjdk.org> wrote:

>> 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>

Marked as reviewed by dholmes (Reviewer).

src/jdk.attach/macosx/native/libattach/VirtualMachineImpl.c line 142:

> 140:         const bool caught  = (kiproc.kp_proc.p_sigcatch & 
> sigmask(SIGQUIT))  != 0;
> 141: 
> 142:         // *only* send QUIT if the target is ready to catch and handle 
> the signal to avoid default "death" if not

Re-requesting this comment be deleted as it effectively just repeats what the 
expanded comments above already say. Thanks

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

PR Review: https://git.openjdk.org/jdk/pull/24085#pullrequestreview-2728168003
PR Review Comment: https://git.openjdk.org/jdk/pull/24085#discussion_r2020361432

Reply via email to