It fails as shown below (I've added an additional line "res:..." to print the actual content of "test.out"). For the failing test, "test.out" is always zero bytes. I think the problem is that the first process finishes before the second process in the pipe is started. In very few cases I saw the "t2_translatePipeline" test succeeding on AIX as well. I assume that was for cases where the first "tr" process was still alive when the second one was started.
in: Now is the time to check! out: Now is the time to check! res: Now is the time to check! in: Now is the time to check! out: Now is the time to check! res: result not as expected java.lang.Exception: Stack trace at java.base/java.lang.Thread.dumpStack(Thread.java:1383) at PipelineTest.fail(PipelineTest.java:275) at PipelineTest.fail(PipelineTest.java:276) at PipelineTest.check(PipelineTest.java:279) at PipelineTest.verify(PipelineTest.java:189) at PipelineTest.t1_simplePipeline(PipelineTest.java:68) at PipelineTest.realMain(PipelineTest.java:42) at PipelineTest.main(PipelineTest.java:286) in: Now is the time to check! out: Now is the time to check! res: result not as expected java.lang.Exception: Stack trace at java.base/java.lang.Thread.dumpStack(Thread.java:1383) at PipelineTest.fail(PipelineTest.java:275) at PipelineTest.fail(PipelineTest.java:276) at PipelineTest.check(PipelineTest.java:279) at PipelineTest.verify(PipelineTest.java:189) at PipelineTest.t1_simplePipeline(PipelineTest.java:71) at PipelineTest.realMain(PipelineTest.java:42) at PipelineTest.main(PipelineTest.java:286) in: Now is the time to check! out: NOw is thE timE tO chEck! res: result not as expected java.lang.Exception: Stack trace at java.base/java.lang.Thread.dumpStack(Thread.java:1383) at PipelineTest.fail(PipelineTest.java:275) at PipelineTest.fail(PipelineTest.java:276) at PipelineTest.check(PipelineTest.java:279) at PipelineTest.verify(PipelineTest.java:189) at PipelineTest.t2_translatePipeline(PipelineTest.java:87) at PipelineTest.realMain(PipelineTest.java:43) at PipelineTest.main(PipelineTest.java:286) The error from the first process should be in the output of the second: java.lang.Exception: Stack trace at java.base/java.lang.Thread.dumpStack(Thread.java:1383) at PipelineTest.fail(PipelineTest.java:275) at PipelineTest.fail(PipelineTest.java:276) at PipelineTest.check(PipelineTest.java:279) at PipelineTest.t3_redirectErrorStream(PipelineTest.java:114) at PipelineTest.realMain(PipelineTest.java:44) at PipelineTest.main(PipelineTest.java:286) Passed = 15, failed = 4 Exception in thread "main" java.lang.AssertionError: Some tests failed at PipelineTest.main(PipelineTest.java:288) On Fri, Dec 7, 2018 at 6:56 PM Roger Riggs <roger.ri...@oracle.com> wrote: > > Hi, > > I'd be interested in how PipelineTest failed on AIX? > > It looks like PipelineTest is flawed in that verifyProcesses() does not > check > all of the 1..n Processes getInputStreams for being a null stream, only > the nth Process. > And the test is incorrectly applied to the last Process, which returns a > null > stream not because of the pipeline but because the output is redirected > to a file. > > Thanks, Roger > > > On 12/07/2018 09:52 AM, Roger Riggs wrote: > > Hi, > > > > I notice that the Solaris case also does not include "|| > > forceNullOutputStream". > > I'll have to investigate why the Pipeline test didn't fail on Solaris. > > > > Please add that to the patch and I'll run it through our tests. > > > > Thanks, Roger > > > > On 12/07/2018 03:05 AM, Volker Simonis wrote: > >> Hi Steve, > >> > >> thanks a lot for this fix. I'm forwarding this to core-libs-dev as > >> well, because that's where the review has to take place. The > >> "ppc-aix-port-dev" list is mostly a marker for the port maintainers to > >> get their attention on relevant changes (so cross-posting is fine in > >> this case :) > >> > >> On Thu, Dec 6, 2018 at 4:26 PM Steve Groeger <groe...@uk.ibm.com> wrote: > >>> Hi all, > >>> > >>> I have been investigating the issue > >>> https://bugs.openjdk.java.net/browse/JDK-8211844 raised by Goetz > >>> Lindenmaier which is related to the > >>> jdk/java/lang/ProcessBuilder/PipelineTest.java JTReg test failing on > >>> AIX. Having done some investigation I have a potential fix fore the > >>> issue: > >>> > >>> > >>> diff -r 9501a7b59111 > >>> src/java.base/unix/classes/java/lang/ProcessImpl.java > >>> --- a/src/java.base/unix/classes/java/lang/ProcessImpl.java Mon Dec > >>> 03 14:28:19 2018 +0300 > >>> +++ b/src/java.base/unix/classes/java/lang/ProcessImpl.java Thu Dec > >>> 06 15:01:03 2018 +0000 > >>> @@ -446,7 +446,7 @@ > >>> ProcessBuilder.NullOutputStream.INSTANCE : > >>> new ProcessPipeOutputStream(fds[0]); > >>> > >>> - stdout = (fds[1] == -1) ? > >>> + stdout = (fds[1] == -1 || forceNullOutputStream) ? > >>> ProcessBuilder.NullInputStream.INSTANCE : > >>> new > >>> DeferredCloseProcessPipeInputStream(fds[1]); > >>> > >> Your change looks good and I can sponsor it. Just as a hint for other > >> reviewers I'd like to mention that this change, albeit in a shared > >> Java file, is still AIX-only because it is in the "AIX" case of a > >> switch statement. > >> > >> @Steve: can you please verify, that your change introduces no > >> regression by running the complete jtreg test suite. > >> > >> Thank you and best regards, > >> Volker > >> > >>> I would appreciate any feedback please, and for someone to be a > >>> sponsor for this and to contributute it to OpenJDK. > >>> > >>> Steve Groeger > >>> IBM Runtime Technologies > >>> Hursley, Winchester > >>> Tel: (44) 1962 816911 Mobex: 279990 Mobile: 07718 517 129 > >>> Fax (44) 1962 816800 > >>> Lotus Notes: Steve Groeger/UK/IBM > >>> Internet: groe...@uk.ibm.com > >>> > >>> Unless stated otherwise above: > >>> IBM United Kingdom Limited - Registered in England and Wales with > >>> number 741598. > >>> Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire > >>> PO6 3AU > >>> Unless stated otherwise above: > >>> IBM United Kingdom Limited - Registered in England and Wales with > >>> number 741598. > >>> Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire > >>> PO6 3AU > > >