I'm in favor, for whatever that's worth.
On Thu, Oct 25, 2018 at 5:33 AM Thomas Stüfe <thomas.stu...@gmail.com> wrote:
>
> Hi all,
>
> the more I mull over this, the more I would prefer to do the jump for
> real and attempt switch the default to posix_spawn() for Linux.
>
> We have theoretically established that both glibc down to 2.4 and
> muslc since always did "the right thing".
>
> We still have time in the 12 time line to test this thoroughly.
>
> What do you think?
>
> Thanks, Thomas
>
> On Wed, Oct 24, 2018 at 10:59 PM Thomas Stüfe <thomas.stu...@gmail.com> wrote:
> >
> > Hi Roger,
> >
> > On Wed 24. Oct 2018 at 21:39, Roger Riggs <roger.ri...@oracle.com> wrote:
> >>
> >> Hi Thomas,
> >>
> >> Sorry, I had the incantation for multiple tests wrong.
> >> Separate test configurations need to be in separate /* */ comment blocks.
> >> BTW, it creates separate .jtr files for each block.
> >>
> >> diff --git a/test/jdk/java/lang/ProcessBuilder/Basic.java 
> >> b/test/jdk/java/lang/ProcessBuilder/Basic.java
> >> --- a/test/jdk/java/lang/ProcessBuilder/Basic.java
> >> +++ b/test/jdk/java/lang/ProcessBuilder/Basic.java
> >> @@ -33,8 +33,10 @@
> >>   * @modules java.base/java.lang:open
> >>   * @run main/othervm/timeout=300 Basic
> >>   * @run main/othervm/timeout=300 -Djdk.lang.Process.launchMechanism=fork 
> >> Basic
> >> - *
> >> + */
> >> +/*
> >>   * @test
> >> + * @modules java.base/java.lang:open
> >>   * @requires (os.family == "linux")
> >>   * @run main/othervm/timeout=300 
> >> -Djdk.lang.Process.launchMechanism=posix_spawn Basic
> >>   * @author Martin Buchholz
> >>
> >>
> >> As for the build configuration being out of scope...
> >>
> >> I don't want to see part of the work done and then the rest forgotten or
> >> worse yet someone comes along in the future and incorrectly believes that
> >> posix_spawn is ready for production and starts filing bugs or getting bit 
> >> by something.
> >> There's a lot more testing to do before it could be come the default
> >> and perhaps a significant warning should be attached to the code so it 
> >> does not get forgotten.
> >
> >
> > I agree, we ideally should not roll out half tested changes. But where does 
> > that leave us wrt this patch?
> >
> > We could just not do it, requiring anyone willing to do the extensive 
> > testing necessary to switch the default to posix-spawn to apply this change 
> > first locally. This is not an insurmountable amount of work, especially 
> > since the base is quite static, so the patch won’t bit rot easily.
> >
> > We could push the patch in its current form, plus a large source comment? 
> > But then. Users do not read comments. A warning on stderr? Would play havoc 
> > with many tests parsing stderr.
> >
> > Do you have an idea how to proceed?
> >
> > Thanks, Thomas
> >
> >>
> >> Regards, Roger
> >>
> >>
> >> On 10/24/18 1:53 PM, Thomas Stüfe wrote:
> >>
> >> Hi Roger,
> >>
> >> On Wed, Oct 24, 2018 at 5:23 PM Roger Riggs <roger.ri...@oracle.com> wrote:
> >>
> >> Hi Thomas,
> >>
> >> Thanks for adding the test.
> >>
> >> There's a feature of jtreg that was exposed a couple of month ago that
> >> can be used to deal with running the test too many times.
> >>
> >> There can be multiple @test blocks with different @requires.
> >>
> >> * @run main/othervm/timeout=300 Basic * @run main/othervm/timeout=300
> >> -Djdk.lang.Process.launchMechanism=fork Basic * * @test * @requires
> >> (os.family == "linux") * @run main/othervm/timeout=300
> >> -Djdk.lang.Process.launchMechanism=posix_spawn Basic
> >>
> >>
> >> Does not seem to work, sorry:
> >>
> >>   24 /*
> >>   25  * @test
> >>   26  * @bug 4199068 4738465 4937983 4930681 4926230 4931433 4932663 
> >> 4986689
> >>   27  *      5026830 5023243 5070673 4052517 4811767 6192449 6397034 
> >> 6413313
> >>   28  *      6464154 6523983 6206031 4960438 6631352 6631966 6850957 
> >> 6850958
> >>   29  *      4947220 7018606 7034570 4244896 5049299 8003488 8054494 
> >> 8058464
> >>   30  *      8067796
> >>   31  * @key intermittent
> >>   32  * @summary Basic tests for Process and Environment Variable code
> >>   33  * @modules java.base/java.lang:open
> >>   34  * @run main/othervm/timeout=300 Basic
> >>   35  * @run main/othervm/timeout=300
> >> -Djdk.lang.Process.launchMechanism=fork Basic
> >>   36  * @test
> >>   37  * @requires (os.family == "liinux")
> >>   38  * @run main/othervm/timeout=300
> >> -Djdk.lang.Process.launchMechanism=posix_spawn Basic
> >>   39  * @author Martin Buchholz
> >>   40  */
> >>
> >> If I have @requires (os.family == "linux") all three variants are executed 
> >> - ok.
> >>
> >> Then I wanted to have a negative test, so I misnamed linux as "liinux"
> >> and would have expected the first @test block to fire, the second to
> >> be ignored. But in fact:
> >>
> >> thomas@mainframe /shared/projects/openjdk/jtreg $
> >> ../jtreg-prebuilt/jtreg/bin/jtreg -jdk
> >> ../jdk-jdk/output-slowdebug/images/jdk/
> >> ../jdk-jdk/source/test/jdk/java/lang/ProcessBuilder/Basic.java
> >> Test results: no tests selected
> >>
> >> So to me it looks like as if the @requires tag is valid for both @test
> >> blocks, not only the one it appears in.
> >>
> >> I'll run this through our build system too.
> >>
> >> To fully test out using posix_spawn in many more different scenarios the
> >> build system should be augmented to be able to use it as the default for
> >> an entire build/CI/CD/test runs.
> >>
> >> Sure! But I think this is out of scope for this patch.
> >>
> >> Thanks, Thomas
> >>
> >> Thanks, Roger
> >>
> >> On 10/24/2018 10:35 AM, Thomas Stüfe wrote:
> >>
> >> Hi all,
> >>
> >> version 2 of Davids patch, with test changes:
> >>
> >> http://cr.openjdk.java.net/~stuefe/webrevs/JDK-8212828-posix_spawn.patch/webrev.01/webrev/
> >>
> >> Executed the test on my local Ubuntu box, works fine. Submit job runs.
> >>
> >> About the test: I added a new line:
> >>
> >>    * @run main/othervm/timeout=300 Basic
> >>    * @run main/othervm/timeout=300 -Djdk.lang.Process.launchMechanism=fork 
> >> Basic
> >> + * @run main/othervm/timeout=300
> >> -Djdk.lang.Process.launchMechanism=posix_spawn Basic
> >>
> >> The way I understand those tests work is that the first line causes
> >> the test to be run with the default launch mechanism, the second line
> >> with jdk.lang.Process.launchMechanism=fork explicitly. The third line,
> >> added by me, will now explicitly test with posix_spawn. I did not
> >> limit the platforms, since posix_spawn should now be available on all
> >> platforms, so it should work on all platforms. But then, on all other
> >> platforms it has already been the default.
> >>
> >> This is still a bit iffy: On Windows, jdk.lang.Process.launchMechanism
> >> gets ignored, so we just executed the same test twice (now three
> >> times)? And now we execute the posix_spawn variant twice on all
> >> platforms where this is the default, so line 1 and 3 are the same? You
> >> see I am not a jtreg expert :) Can I specify a @run directive for only
> >> one platform? In that case I would limit the explicit posix_spawn test
> >> to Linux.
> >>
> >> Note however that if we really abondon vfork in the future and make
> >> posix_spawn the default, this test becomes simpler too.
> >>
> >> Best, Thomas
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >> On Wed, Oct 24, 2018 at 3:36 PM David Lloyd <david.ll...@redhat.com> wrote:
> >>
> >> On Wed, Oct 24, 2018 at 1:05 AM Thomas Stüfe <thomas.stu...@gmail.com> 
> >> wrote:
> >>
> >> Review:
> >>
> >> - copyright dates need updating on the C-sources
> >>
> >> - I opt for "#if defined(__solaris__) || defined(_ALLBSD_SOURCE) ||
> >> defined(_AIX) || defined(__linux__)" to be removed completely from
> >> unix-specific source files. The ifdef now covers all OpenJDK Unix
> >> platforms.
> >>
> >> Here's a version with these changes.
> >>
> >> --
> >> - DML
> >>
> >>



-- 
- DML

Reply via email to