RFR: 7904101: intermittent failure in StreamsTest.agentvm.ok
Vladimir Petko
vpetko at openjdk.org
Wed Oct 22 02:43:16 UTC 2025
FileDescriptor test intermittently fails because the agent's process output capture lacks synchronisation.
This PR fixes the issue:
- Agent VM prints the "process output separator" to stderr and stdout before and after action
- The main vm uses the marker to stop reading the stream for the current test result section (or a general agent log)
- The main vm restarts reading the log after updating the test section (or clearing it) until the next marker or the process is shut down.
Alternative:
-Disable the test and make no assumptions about contents of the agent vm process output.
Testing: tier1 and tier2 tests on mainline jdk (Ubuntu Linux) in agentvm mode.
make test TEST=":tier1 :tier2" JTREG="TEST_MODE=agentvm"
....
==============================
Test summary
==============================
TEST TOTAL PASS FAIL ERROR SKIP
jtreg:test/hotspot/jtreg:tier1 3124 2837 0 0 287
jtreg:test/jdk:tier1 2519 2480 0 0 39
jtreg:test/langtools:tier1 4670 4660 0 0 10
jtreg:test/jaxp:tier1 0 0 0 0 0
jtreg:test/lib-test:tier1 38 38 0 0 0
jtreg:test/hotspot/jtreg:tier2 960 913 0 0 47
>> jtreg:test/jdk:tier2 4455 4220 1 0 234 <<
jtreg:test/langtools:tier2 14 12 0 0 2
jtreg:test/jaxp:tier2 517 516 0 0 1
jtreg:test/docs:tier2 4 0 0 0 4
==============================
TEST FAILURE
Unrelated failure: test/jdk/java/nio/channels/DatagramChannel/SendReceiveMaxSize.java
---------System.out:(98/7409)----------
Seed from RandomFactory = 7590698091695474155L
[15:02:42.244] config SendReceiveMaxSize.setUp(): success [0ms]
[15:02:42.272] test SendReceiveMaxSize.testGetOption(SendReceiveMaxSize$$Lambda/0x00000000450736f8 at 8d234b9, 65507, /10.201.67.1): success [7ms]
[15:02:42.273] test SendReceiveMaxSize.testGetOption(SendReceiveMaxSize$$Lambda/0x0000000045073920 at 449629ff, 65507, /10.201.67.1): success [0ms]
[15:02:42.273] test SendReceiveMaxSize.testGetOption(SendReceiveMaxSize$$Lambda/0x0000000045078000 at 2b071f3f, 65527, java.net.Inet6Address at 22212892): success [0ms]
[15:02:42.273] test SendReceiveMaxSize.testGetOption(SendReceiveMaxSize$$Lambda/0x0000000045078228 at 298b6c94, 65527, java.net.Inet6Address at 22212892): success [0ms]
testSendReceiveMaxSize: sender: /10.201.67.1:50670 -> receiver: /10.201.67.1:49236
sendBuf: java.nio.HeapByteBuffer[pos=0 lim=65507 cap=65507]
receiveBuf: java.nio.HeapByteBuffer[pos=0 lim=65507 cap=65507]
sendBuf: java.nio.HeapByteBuffer[pos=0 lim=65506 cap=65506]
receiveBuf: java.nio.HeapByteBuffer[pos=0 lim=65506 cap=65506]
[15:02:42.286] test SendReceiveMaxSize.testSendReceiveMaxSize(SendReceiveMaxSize$$Lambda/0x00000000450736f8 at 8d234b9, 65507, /10.201.67.1): success [11ms]
testSendReceiveMaxSize: sender: /10.201.67.1:48168 -> receiver: /10.201.67.1:52274
sendBuf: java.nio.HeapByteBuffer[pos=0 lim=65507 cap=65507]
receiveBuf: java.nio.HeapByteBuffer[pos=0 lim=65507 cap=65507]
sendBuf: java.nio.HeapByteBuffer[pos=0 lim=65506 cap=65506]
receiveBuf: java.nio.HeapByteBuffer[pos=0 lim=65506 cap=65506]
[15:02:42.288] test SendReceiveMaxSize.testSendReceiveMaxSize(SendReceiveMaxSize$$Lambda/0x0000000045073920 at 449629ff, 65507, /10.201.67.1): success [2ms]
testSendReceiveMaxSize: sender: /[fe80:0:0:0:fc54:ff:fe24:9197%17]:46562 -> receiver: /[fe80:0:0:0:fc54:ff:fe24:9197%17]:58635
[15:02:42.289] test SendReceiveMaxSize.testSendReceiveMaxSize(SendReceiveMaxSize$$Lambda/0x0000000045078000 at 2b071f3f, 65527, java.net.Inet6Address at 8959069): failure [1ms]
java.net.SocketException: Message too long
at java.base/sun.nio.ch.DatagramChannelImpl.send0(Native Method)
at java.base/sun.nio.ch.DatagramChannelImpl.sendFromNativeBuffer(DatagramChannelImpl.java:914)
at java.base/sun.nio.ch.DatagramChannelImpl.send(DatagramChannelImpl.java:886)
at java.base/sun.nio.ch.DatagramChannelImpl.send(DatagramChannelImpl.java:798)
at SendReceiveMaxSize.testSendReceiveMaxSize(SendReceiveMaxSize.java:155)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:565)
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:1604)
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)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1218)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1140)
at org.testng.TestNG.runSuites(TestNG.java:1069)
at org.testng.TestNG.run(TestNG.java:1037)
at com.sun.javatest.regtest.agent.TestNGRunner.main(TestNGRunner.java:109)
at com.sun.javatest.regtest.agent.TestNGRunner.main(TestNGRunner.java:65)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:565)
at com.sun.javatest.regtest.agent.MainWrapper$MainTask.run(MainWrapper.java:138)
at java.base/java.lang.Thread.run(Thread.java:1474)
testSendReceiveMaxSize: sender: /[fe80:0:0:0:fc54:ff:fe24:9197%17]:39368 -> receiver: /[fe80:0:0:0:fc54:ff:fe24:9197%17]:38228
[15:02:42.291] test SendReceiveMaxSize.testSendReceiveMaxSize(SendReceiveMaxSize$$Lambda/0x0000000045078228 at 298b6c94, 65527, java.net.Inet6Address at 8959069): failure [0ms]
java.net.SocketException: Message too long
at java.base/sun.nio.ch.DatagramChannelImpl.send0(Native Method)
at java.base/sun.nio.ch.DatagramChannelImpl.sendFromNativeBuffer(DatagramChannelImpl.java:914)
at java.base/sun.nio.ch.DatagramChannelImpl.send(DatagramChannelImpl.java:886)
at java.base/sun.nio.ch.DatagramChannelImpl.send(DatagramChannelImpl.java:798)
at SendReceiveMaxSize.testSendReceiveMaxSize(SendReceiveMaxSize.java:155)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:565)
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:1604)
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)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1218)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1140)
at org.testng.TestNG.runSuites(TestNG.java:1069)
at org.testng.TestNG.run(TestNG.java:1037)
at com.sun.javatest.regtest.agent.TestNGRunner.main(TestNGRunner.java:109)
at com.sun.javatest.regtest.agent.TestNGRunner.main(TestNGRunner.java:65)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:565)
at com.sun.javatest.regtest.agent.MainWrapper$MainTask.run(MainWrapper.java:138)
at java.base/java.lang.Thread.run(Thread.java:1474)
===============================================
java/nio/channels/DatagramChannel/SendReceiveMaxSize.java
Total tests run: 8, Passes: 6, Failures: 2, Skips: 0
===============================================
-------------
Commit messages:
- feat: synchronize agent's stdout/stderr logging
Changes: https://git.openjdk.org/jtreg/pull/295/files
Webrev: https://webrevs.openjdk.org/?repo=jtreg&pr=295&range=00
Issue: https://bugs.openjdk.org/browse/CODETOOLS-7904101
Stats: 219 lines in 3 files changed: 180 ins; 29 del; 10 mod
Patch: https://git.openjdk.org/jtreg/pull/295.diff
Fetch: git fetch https://git.openjdk.org/jtreg.git pull/295/head:pull/295
PR: https://git.openjdk.org/jtreg/pull/295
More information about the jtreg-dev
mailing list