diff options
author | Andrew Azores <[email protected]> | 2013-10-16 13:13:19 -0400 |
---|---|---|
committer | Andrew Azores <[email protected]> | 2013-10-16 13:13:19 -0400 |
commit | a8d0fefc52c821169e1c9d7be41cdeb75456dd64 (patch) | |
tree | 584807bb03aa371bc3dd0d71e804cb4a77c5b70a /tests/reproducers/custom/JNLPClassLoaderDeadlock/srcs/JNLPClassLoaderDeadlock_1.java | |
parent | 76667d1d971e9fc9ac9840d64a38e7a06a6cfabb (diff) |
Resolve multiple-applet deadlock issue in JNLPClassLoader
New lock used for synchronizing JNLPClassLoader#loadClass(String) to avoid
deadlock condition when multiple applets are being loaded simultaneously.
Regression test included.
* netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java: (loadClassLock)
private member for locking of loadClass method. (loadClass) synchronizes
using new lock rather than instance intrinsic lock to avoid RH976833
deadlock
* tests/reproducers/custom/JNLPClassLoaderDeadlock/testcases/JNLPClassLoaderDeadlockTest.java:
new test for multiple applet deadlock condition
* tests/reproducers/custom/JNLPClassLoaderDeadlock/resources/JNLPClassLoaderDeadlock.html:
same
* tests/reproducers/custom/JNLPClassLoaderDeadlock/srcs/JNLPClassLoaderDeadlock_1.java:
same
* tests/reproducers/custom/JNLPClassLoaderDeadlock/srcs/JNLPClassLoaderDeadlock_2.java:
same
* tests/reproducers/custom/JNLPClassLoaderDeadlock/srcs/Makefile: same
Diffstat (limited to 'tests/reproducers/custom/JNLPClassLoaderDeadlock/srcs/JNLPClassLoaderDeadlock_1.java')
-rw-r--r-- | tests/reproducers/custom/JNLPClassLoaderDeadlock/srcs/JNLPClassLoaderDeadlock_1.java | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/reproducers/custom/JNLPClassLoaderDeadlock/srcs/JNLPClassLoaderDeadlock_1.java b/tests/reproducers/custom/JNLPClassLoaderDeadlock/srcs/JNLPClassLoaderDeadlock_1.java new file mode 100644 index 0000000..616e5d3 --- /dev/null +++ b/tests/reproducers/custom/JNLPClassLoaderDeadlock/srcs/JNLPClassLoaderDeadlock_1.java @@ -0,0 +1,24 @@ +import java.applet.Applet; +import java.awt.*; + +public class JNLPClassLoaderDeadlock_1 extends Applet { + + @Override + public void init() { + System.out.println("JNLPClassLoaderDeadlock_1 applet initialized"); + final String version = System.getProperty("java.version") + " (" + System.getProperty("java.vm.version") + ")"; + final String vendor = System.getProperty("java.vendor"); + final TextField tf = new TextField(40); + tf.setText(version + " -- " + vendor); + tf.setEditable(false); + tf.setBackground(Color.white); + setBackground(Color.white); + add(tf); + System.out.println("JNLPClassLoaderDeadlock_1 applet finished"); + System.out.println("*** APPLET FINISHED ***"); + } + + public static void main(String[] args) { + new JNLPClassLoaderDeadlock_1().init(); + } +} |