RFR: JDK-8315026: java/lang/ProcessHandle/TreeTest.java fails intermittent on AIX in TreeTest.test5 [v3]
Roger Riggs
rriggs at openjdk.org
Tue Oct 10 20:32:03 UTC 2023
On Tue, 10 Oct 2023 09:36:47 GMT, Joachim Kern <jkern at openjdk.org> wrote:
>> We see rather often failures in java/lang/ProcessHandle/TreeTest.java on AIX in TreeTest.test5.
>> The reason is: Previously the implementation based on the /proc file system lead to double pids in the child list; at least intermittent. Using the API getprocs64() instead I was able to eliminate those double pids (and increase the performance by a factor of 4). Otherwise we would have to add an algorithm to filter out the doubles after creating the raw list.
>>
>> Here is a java callstack of the error situation:
>> test TreeTest.test5(): failure
>> java.lang.AssertionError: expected direct children expected [2] but found [3]
>> at org.testng.Assert.fail(Assert.java:99)
>> at org.testng.Assert.failNotEquals(Assert.java:1037)
>> at org.testng.Assert.assertEqualsImpl(Assert.java:140)
>> at org.testng.Assert.assertEquals(Assert.java:122)
>> at org.testng.Assert.assertEquals(Assert.java:907)
>> at TreeTest.test5(TreeTest.java:447)
>> at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
>> at java.base/java.lang.reflect.Method.invoke(Method.java:580)
>> at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:132)
>> at org.testng.internal.TestInvoker.invokeMethod(TestInvoker.java:599)
>> at org.testng.internal.TestInvoker.invokeTestMethod(TestInvoker.java:174)
>> at org.testng.internal.MethodRunner.runInSequence(MethodRunner.java:46)
>> at org.testng.internal.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:822)
>> at org.testng.internal.TestInvoker.invokeTestMethods(TestInvoker.java:147)
>> at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
>> at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:128)
>> at java.base/java.util.ArrayList.forEach(ArrayList.java:1597)
>> at org.testng.TestRunner.privateRun(TestRunner.java:764)
>> at org.testng.TestRunner.run(TestRunner.java:585)
>> at org.testng.SuiteRunner.runTest(SuiteRunner.java:384)
>> at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:378)
>> at org.testng.SuiteRunner.privateRun(SuiteRunner.java:337)
>> at org.testng.SuiteRunner.run(SuiteRunner.java:286)
>> at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53)
>> at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:96)
>> ...
>
> Joachim Kern has updated the pull request incrementally with one additional commit since the last revision:
>
> cosmetic changes
The full stack trace doesn't add any value in the PR description and makes every email on the subject too long.
If its in the issue, it doesn't need to be here. $0.02, Roger
src/java.base/aix/native/libjava/ProcessHandleImpl_aix.c line 85:
> 83: const int Chunk = 100;
> 84: struct procentry64 ProcessBuffer[Chunk];
> 85: pid_t IndexPointer = 0;
Initial capital 'I' is unusual for a local variable.
src/java.base/aix/native/libjava/ProcessHandleImpl_aix.c line 106:
> 104: }
> 105:
> 106: while ((num = getprocs64(ProcessBuffer, sizeof(struct procentry64), NULL, sizeof(struct fdsinfo64), &IndexPointer, Chunk)) != -1) {
Please line break somewhere between 80-100.
src/java.base/aix/native/libjava/ProcessHandleImpl_aix.c line 108:
> 106: while ((num = getprocs64(ProcessBuffer, sizeof(struct procentry64), NULL, sizeof(struct fdsinfo64), &IndexPointer, Chunk)) != -1) {
> 107: for (i = 0; i < num; i++) {
> 108: pid_t ppid = 0;
Indentation should be 4 for core-libs native files.
src/java.base/aix/native/libjava/ProcessHandleImpl_aix.c line 138:
> 136: }
> 137: if (num < Chunk)
> 138: break;
indent = 4
The style (in this file) after `if` is to use braces.
src/java.base/aix/native/libjava/ProcessHandleImpl_aix.c line 155:
> 153: JNU_ThrowByNameWithLastError(env,
> 154: "java/lang/RuntimeException", "Unable to retrieve Process info");
> 155: return -1;
Identation = 4
-------------
PR Comment: https://git.openjdk.org/jdk/pull/16051#issuecomment-1756094157
PR Review Comment: https://git.openjdk.org/jdk/pull/16051#discussion_r1353220388
PR Review Comment: https://git.openjdk.org/jdk/pull/16051#discussion_r1353209896
PR Review Comment: https://git.openjdk.org/jdk/pull/16051#discussion_r1353211188
PR Review Comment: https://git.openjdk.org/jdk/pull/16051#discussion_r1353214079
PR Review Comment: https://git.openjdk.org/jdk/pull/16051#discussion_r1353216706
More information about the core-libs-dev
mailing list