RFR: 8234262: Unmask SIGQUIT in a child process [v3]

Thomas Stuefe stuefe at openjdk.org
Fri Sep 23 03:28:37 UTC 2022


On Thu, 22 Sep 2022 22:41:21 GMT, Roger Riggs <rriggs at openjdk.org> wrote:

>> Clear the signal mask of the child when launching with posix_spawn.
>> 
>> SIGQUIT signals are handled on non-Java Threads by the VM.
>> For Java threads the signal mask blocks SIGQUIT.  
>> The ProcessBuilder uses posix_spawn on all platforms to create new processes.
>> Without a specific request, the child process inherits the signal masks from the parent.
>
> Roger Riggs has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Move clearing of the signal mask to jspawnhelper so the launched
>   process gets a clear signal mask.

test/jdk/java/lang/ProcessBuilder/UnblockSignals.java line 37:

> 35:     public static void main(String[] args)  throws IOException, InterruptedException {
> 36:         // Check that SIGQUIT is not masked, in previous releases it was masked
> 37:         final ProcessBuilder pb = new ProcessBuilder("sleep", "30").inheritIO();

SIGQUITing the child may leave a core dump. You may want to wrap the sleep in a shell call with ulimit to prevent that, e.g. 

`new ProcessBuilder("sh", "-c", "ulimit -c 0 && sleep 30");`

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

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


More information about the core-libs-dev mailing list