Please review the following backport to JDK-8u from JDK-9 at your convenience:
JDK-9 review thread :
Bug : https://bugs.openjdk.java.net/browse/JDK-8162461
JDK-8u Webrev : http://cr.openjdk.java.net/~jdv/8162461.8u/webrev.00/
Issue : If we try to perform operations like reader.abort()/reader.dispose()/
reader.reset() in any of the IIOReadUpdateListener callbacks, JVM will throw
Root cause : We are making callbacks from native side to Java by holding some
resources in JNI critical lock.
Solution : We have to release the JNI critical lock on the resources before we
call Java function from native side. If we have JNI critical lock and we throw
an Exception in that case also we should release the lock.
I have verified jtreg, JCK and JPRT in JDK8u-dev also.