https://bugs.openjdk.java.net/browse/JDK-8200449
Problem is due to passing zero to Random.nextInt(int). Diff included below. Thanks, Brian --- a/test/jdk/java/io/ByteArrayInputStream/ReadAllReadNTransferTo.java +++ b/test/jdk/java/io/ByteArrayInputStream/ReadAllReadNTransferTo.java @@ -43,22 +43,22 @@ private static Random random = RandomFactory.getRandom(); public static void main(String... args) throws IOException { byte[] buf = new byte[SIZE]; random.nextBytes(buf); int position = random.nextInt(SIZE/2); int size = random.nextInt(SIZE - position); ByteArrayInputStream bais = new ByteArrayInputStream(buf, position, size); - int off = random.nextInt(size / 2); - int len = random.nextInt(size - off); + int off = size < 2 ? 0 : random.nextInt(size / 2); + int len = size - off < 1 ? 0 : random.nextInt(size - off); byte[] bN = new byte[off + len]; if (bais.readNBytes(bN, off, len) != len) { throw new RuntimeException("readNBytes return value"); } if (!Arrays.equals(bN, off, off + len, buf, position, position + len)) { throw new RuntimeException("readNBytes content"); }