RFR: 8307990: jspawnhelper must close its writing side of a pipe before reading from it [v4]

Volker Simonis simonis at openjdk.org
Tue May 23 15:15:05 UTC 2023


On Tue, 23 May 2023 05:34:15 GMT, Thomas Stuefe <stuefe at openjdk.org> wrote:

>> Volker Simonis has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains five commits:
>> 
>>  - Merge branch 'master' into JDK-8307990
>>  - Address comments from tstuefe and RogerRiggs
>>  - REALLY adding the test :)
>>  - Added test case
>>  - 8307990: jspawnhelper must close its writing side of a pipe before reading from it
>
> test/jdk/java/lang/ProcessBuilder/JspawnhelperProtocol.java line 28:
> 
>> 26:  * @test
>> 27:  * @bug 8307990
>> 28:  * @requires (os.family == "linux" & !vm.musl)
> 
> Muslc supports posix_spawn.
> 
> I tested your patch on Alpine, it works and the test works too. Please enable for musl.

Thanks, will do.

> test/jdk/java/lang/ProcessBuilder/JspawnhelperProtocol.java line 92:
> 
>> 90:         }
>> 91:     }
>> 92: 
> 
> Small nits, mainly to make this test easier to understand to the casual reader:
> - consistent naming: we have "simulateCrashInChild" and "simulateCrashInParent", good, but then we have "childCode", which is actually the code executed in the parent, right?
> - simulateCrashInChild and simulateCrashInParent could be merged into one function that does:
>   - spawn parent with env var
>   - read output, scan for `"posix_spawn:XXX"`
>   - parent must have exit code != 0 and should not have timed out
>   - if XXX is not 0, check grandchild pid (must not be a live process)

This sounds reasonable. I've renamed `childCode()` to `parentCode()`, streamlined the wording for "parent" and "child" in the various log messages and exceptions and added a comment to the `main()` method which explains the working of the test and the meaning of "parent" and "child" in the output.

I've not merged `simulateCrashInChild()` and `simulateCrashInParent()` because there are some subtle differences between the two (and now with the improved "parent"/"child" naming even more :) and I don't think that a merged version will improve the readability.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/13956#discussion_r1202266007
PR Review Comment: https://git.openjdk.org/jdk/pull/13956#discussion_r1202365663


More information about the core-libs-dev mailing list