RFR: 8269091: javax/sound/sampled/Clip/SetPositionHang.java failed with ArrayIndexOutOfBoundsException: Array index out of range: -4

Phil Race prr at openjdk.java.net
Fri Feb 11 00:04:26 UTC 2022


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



More information about the client-libs-dev mailing list