-
Bug
-
Resolution: Won't Fix
-
P4
-
5.0u31, 7
-
x86
-
linux_redhat_5.0
A CU faces with a serious deadlock in java.lang.instrumentation and stop their system.
CONFIGURATION:
OS :
xxxx 116 % uname -a
Linux xxxx 2.6.18-164.11.1.el5 #1 SMP Wed Jan 6 13:26:04 EST 2010 x86
_64 x86_64 x86_64 GNU/Linux
xxxx 117 % more /etc/redhat-release
Red Hat Enterprise Linux Server release 5.4 (Tikanga)
JDK : JDK5u31(32bit)/JDK5u30(32bit)
java version "1.5.0_31"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_31-b02)
Java HotSpot(TM) Server VM (build 1.5.0_31-b02, mixed mode)
java version "1.5.0_30"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_30-b03)
Java HotSpot(TM) Server VM (build 1.5.0_30-b03, mixed mode)
REPRODUCE:
1. unfold attached TP1.zip
2. Goto TP1 directory
3. Launch
"java -javaagent:myagent.jar test1"
You will see the following message.
<premain>
transform:StartInPremain(sun.misc.Launcher$AppClassLoader@18e3e60)
transform:sun/misc/URLClassPath$FileLoader$1(null)
transform:test1(sun.misc.Launcher$AppClassLoader@18e3e60)
transform:LoadBySystemCL(sun.misc.Launcher$AppClassLoader@18e3e60)
transform:javax/management/MBeanInfo(null)
4. Open another console, find out the processID, and launch
"kill -3 <processID>"
You will see an deadlock in the thread dump.
(ex. please see the attached deadlock-log-jdk5u31.txt. )
INVESTIGATION:
An deadlock occurs between "bootstrap class loader" and a lock(synchronized)
gotten in javaagent.(This can be confirmed in thread dump)
When a user use instrument functionality, the user implements transform() method of java.lang.instrument.ClassFileTransformer.
If the target classes of classloading are classes in rt.jar,
transform() is called under the status of which "bootstrap class loader" is locked.
This seems to result in the deadlock.
If this is a customer with a a support contract this must go through customer support to get the correct prio. thanks!
CONFIGURATION:
OS :
xxxx 116 % uname -a
Linux xxxx 2.6.18-164.11.1.el5 #1 SMP Wed Jan 6 13:26:04 EST 2010 x86
_64 x86_64 x86_64 GNU/Linux
xxxx 117 % more /etc/redhat-release
Red Hat Enterprise Linux Server release 5.4 (Tikanga)
JDK : JDK5u31(32bit)/JDK5u30(32bit)
java version "1.5.0_31"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_31-b02)
Java HotSpot(TM) Server VM (build 1.5.0_31-b02, mixed mode)
java version "1.5.0_30"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_30-b03)
Java HotSpot(TM) Server VM (build 1.5.0_30-b03, mixed mode)
REPRODUCE:
1. unfold attached TP1.zip
2. Goto TP1 directory
3. Launch
"java -javaagent:myagent.jar test1"
You will see the following message.
<premain>
transform:StartInPremain(sun.misc.Launcher$AppClassLoader@18e3e60)
transform:sun/misc/URLClassPath$FileLoader$1(null)
transform:test1(sun.misc.Launcher$AppClassLoader@18e3e60)
transform:LoadBySystemCL(sun.misc.Launcher$AppClassLoader@18e3e60)
transform:javax/management/MBeanInfo(null)
4. Open another console, find out the processID, and launch
"kill -3 <processID>"
You will see an deadlock in the thread dump.
(ex. please see the attached deadlock-log-jdk5u31.txt. )
INVESTIGATION:
An deadlock occurs between "bootstrap class loader" and a lock(synchronized)
gotten in javaagent.(This can be confirmed in thread dump)
When a user use instrument functionality, the user implements transform() method of java.lang.instrument.ClassFileTransformer.
If the target classes of classloading are classes in rt.jar,
transform() is called under the status of which "bootstrap class loader" is locked.
This seems to result in the deadlock.
If this is a customer with a a support contract this must go through customer support to get the correct prio. thanks!
- duplicates
-
JDK-7071061 Deadlock occurs with URLClassLoader
- Closed
- relates to
-
JDK-8258800 Deprecate -XX:+AlwaysLockClassLoader
- Resolved
-
JDK-6835233 Fedora 9 jdk regression test failed: java/lang/instrument/ParallelTransformerLoader.sh
- Resolved
-
JDK-5088398 java.lang.instrument TCK test deadlock (test11)
- Closed