This test has started failing since we got M1 macs to test on. I don't think we've ever seen this failure elsewhere. I don't know what it is about that architecture that makes it more likely but I can see how it can happen when multiple threads are using the same instance.
if (newFramePosition >= 0) { clipBytePosition = newFramePosition * frameSize; newFramePosition = -1; } newFramePosition is declared volatile which does make it quite possible that after the read and before the use it will have changed. The fix just synchronizes this block to prevent it. ------------- Commit messages: - 8269091: javax/sound/sampled/Clip/SetPositionHang.java failed with ArrayIndexOutOfBoundsException: Array index out of range: -4 Changes: https://git.openjdk.java.net/jdk/pull/7436/files Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=7436&range=00 Issue: https://bugs.openjdk.java.net/browse/JDK-8269091 Stats: 6 lines in 2 files changed: 2 ins; 0 del; 4 mod Patch: https://git.openjdk.java.net/jdk/pull/7436.diff Fetch: git fetch https://git.openjdk.java.net/jdk pull/7436/head:pull/7436 PR: https://git.openjdk.java.net/jdk/pull/7436