JDK-8322877 : java/io/BufferedInputStream/TransferTo.java failed with IndexOutOfBoundsException
  • Type: Bug
  • Component: core-libs
  • Sub-Component: java.io
  • Affected Version: 23
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2024-01-03
  • Updated: 2024-01-08
  • Resolved: 2024-01-03
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 23
23 b04Fixed
Related Reports
Relates :  
Sub Tasks
JDK-8322963 :  
Description
----------System.out:(48/3152)----------
Seed from RandomFactory = -3824635998985927190L
test TransferTo.testNullPointerException(): success
test TransferTo.testStreamContents(): failure
java.lang.IndexOutOfBoundsException: Range [5825, 5825 + 8192) out of bounds for length 8192
	at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:100)
	at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckFromIndexSize(Preconditions.java:118)
	at java.base/jdk.internal.util.Preconditions.checkFromIndexSize(Preconditions.java:397)
	at java.base/java.util.Objects.checkFromIndexSize(Objects.java:417)
	at java.base/java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:131)
	at java.base/java.io.BufferedInputStream.implTransferTo(BufferedInputStream.java:647)
	at java.base/java.io.BufferedInputStream.transferTo(BufferedInputStream.java:631)
	at TransferTo.checkTransferredContents(TransferTo.java:182)
	at TransferTo.testStreamContents(TransferTo.java:133)
Comments
Changeset: 54b3ceec Author: Brian Burkhalter <bpb@openjdk.org> Date: 2024-01-03 21:23:06 +0000 URL: https://git.openjdk.org/jdk/commit/54b3ceeca27b67f4270d8b700b072f46959dba65
03-01-2024

A pull request was submitted for review. URL: https://git.openjdk.org/jdk/pull/17250 Date: 2024-01-03 18:01:59 +0000
03-01-2024

End position instead of number to write is passed to ByteArrayOutputStream.write.
03-01-2024

noreg-other: Functionality is covered by existing tests.
03-01-2024

Here's a log file snippet from the jdk-23+4-174-tier2 sighting: java/io/BufferedInputStream/TransferTo.java #section:testng ----------messages:(6/263)---------- command: testng -Xmx1280m TransferTo reason: User specified action: run testng/othervm/timeout=180 -Xmx1280m TransferTo started: Wed Jan 03 11:15:07 UTC 2024 Mode: othervm [/othervm specified] finished: Wed Jan 03 11:15:07 UTC 2024 elapsed time (seconds): 0.669 ----------configuration:(0/0)---------- ----------System.out:(48/3149)---------- Seed from RandomFactory = 6578882785781289647L test TransferTo.testNullPointerException(): success test TransferTo.testStreamContents(): failure java.lang.IndexOutOfBoundsException: Range [848, 848 + 8192) out of bounds for length 8192 at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:100) at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckFromIndexSize(Preconditions.java:118) at java.base/jdk.internal.util.Preconditions.checkFromIndexSize(Preconditions.java:397) at java.base/java.util.Objects.checkFromIndexSize(Objects.java:417) at java.base/java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:131) at java.base/java.io.BufferedInputStream.implTransferTo(BufferedInputStream.java:647) at java.base/java.io.BufferedInputStream.transferTo(BufferedInputStream.java:631) at TransferTo.checkTransferredContents(TransferTo.java:182) at TransferTo.testStreamContents(TransferTo.java:133) 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) 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:102) at com.sun.javatest.regtest.agent.TestNGRunner.main(TestNGRunner.java:58) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at com.sun.javatest.regtest.agent.MainWrapper$MainTask.run(MainWrapper.java:138) at java.base/java.lang.Thread.run(Thread.java:1570) =============================================== java/io/BufferedInputStream/TransferTo.java Total tests run: 2, Passes: 1, Failures: 1, Skips: 0 =============================================== ----------System.err:(12/671)----------
03-01-2024

The problem is reproducible with the indicated RandomFactory seed -3824635998985927190L.
03-01-2024