Vlad-

Interesting ... looks like it has something to do with an interaction between the JVM and the PCClassFileTransformer agent (responsible for enhancing the entity classes at runtime). If you manually enhance your entities and then run without the -javaagent flag, do you ever get the deadlock?




On Jan 8, 2007, at 12:25 PM, Vlad Tatavu wrote:

Yeah, it looks like the attachments were removed by the list server. I'm using Derby. Here are the stack traces for the two threads involved in
the deadlock:

3XMTHREADINFO      "main" (TID:0x0015EC00, sys_thread_t:0x00358470,
state:B, native ID:0x000017B4) prio=5
4XESTACKTRACE          at
com/ibm/oti/vm/BootstrapClassLoader.loadClass (BootstrapClassLoader.java:63(Compiled
Code))
4XESTACKTRACE          at
java/lang/ClassLoader.loadClass(ClassLoader.java:587(Compiled Code))
4XESTACKTRACE          at
java/lang/ClassLoader.loadClass(ClassLoader.java:587(Compiled Code))
4XESTACKTRACE          at
sun/misc/Launcher$AppClassLoader.loadClass(Launcher.java:327(Compiled
Code))
4XESTACKTRACE          at
java/lang/ClassLoader.loadClass(ClassLoader.java:563(Compiled Code))
4XESTACKTRACE          at java/lang/ClassLoader.defineClassImpl(Native
Method)
4XESTACKTRACE          at
java/lang/ClassLoader.defineClass(ClassLoader.java:223(Compiled Code))
4XESTACKTRACE          at
java/security/SecureClassLoader.defineClass(SecureClassLoader.java: 148(Compiled
Code))
4XESTACKTRACE          at
java/net/URLClassLoader.defineClass(URLClassLoader.java:556(Compiled
Code))
4XESTACKTRACE          at
java/net/URLClassLoader.access$400(URLClassLoader.java:119(Compiled Code))
4XESTACKTRACE          at
java/net/URLClassLoader$ClassFinder.run(URLClassLoader.java:957 (Compiled
Code))
4XESTACKTRACE          at
java/security/AccessController.doPrivileged(AccessController.java:275)
4XESTACKTRACE          at
java/net/URLClassLoader.findClass(URLClassLoader.java:487(Compiled Code))
4XESTACKTRACE          at
java/lang/ClassLoader.loadClass(ClassLoader.java:606(Compiled Code))
4XESTACKTRACE          at
sun/misc/Launcher$AppClassLoader.loadClass(Launcher.java:327(Compiled
Code))
4XESTACKTRACE          at
java/lang/ClassLoader.loadClass(ClassLoader.java:563(Compiled Code))
4XESTACKTRACE          at
org/apache/openjpa/jdbc/sql/SQLFactoryImpl.newSelect (SQLFactoryImpl.java:40)
4XESTACKTRACE          at
org/apache/openjpa/jdbc/kernel/ JDBCStoreManager.getInitializeStateResult(JDBCStoreManager.java:367)
4XESTACKTRACE          at
org/apache/openjpa/jdbc/kernel/JDBCStoreManager.initializeState (JDBCStoreManager.java:296)
4XESTACKTRACE          at
org/apache/openjpa/jdbc/kernel/JDBCStoreManager.initialize (JDBCStoreManager.java:252)
4XESTACKTRACE          at
org/apache/openjpa/kernel/DelegatingStoreManager.initialize (DelegatingStoreManager.java:108)
4XESTACKTRACE          at
org/apache/openjpa/kernel/ROPStoreManager.initialize (ROPStoreManager.java:54)
4XESTACKTRACE          at
org/apache/openjpa/kernel/BrokerImpl.initialize(BrokerImpl.java:870)
4XESTACKTRACE          at
org/apache/openjpa/kernel/BrokerImpl.find(BrokerImpl.java:828)
4XESTACKTRACE          at
org/apache/openjpa/kernel/BrokerImpl.find(BrokerImpl.java:743)
4XESTACKTRACE          at
org/apache/openjpa/kernel/DelegatingBroker.find (DelegatingBroker.java:169)
4XESTACKTRACE          at
org/apache/openjpa/persistence/EntityManagerImpl.find (EntityManagerImpl.java:320)
4XESTACKTRACE          at
play/TestInsertAndFind.test001(TestInsertAndFind.java:48)
4XESTACKTRACE          at
sun/reflect/NativeMethodAccessorImpl.invoke0(Native Method)
4XESTACKTRACE          at
sun/reflect/NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:64)
4XESTACKTRACE          at
sun/reflect/DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) 4XESTACKTRACE at java/lang/reflect/Method.invoke (Method.java:615)
4XESTACKTRACE          at
org/junit/internal/runners/TestMethodRunner.executeMethodBody (TestMethodRunner.java:99)
4XESTACKTRACE          at
org/junit/internal/runners/TestMethodRunner.runUnprotected (TestMethodRunner.java:81)
4XESTACKTRACE          at
org/junit/internal/runners/BeforeAndAfterRunner.runProtected (BeforeAndAfterRunner.java:34)
4XESTACKTRACE          at
org/junit/internal/runners/TestMethodRunner.runMethod (TestMethodRunner.java:75)
4XESTACKTRACE          at
org/junit/internal/runners/TestMethodRunner.run (TestMethodRunner.java:45)
4XESTACKTRACE          at
org/junit/internal/runners/TestClassMethodsRunner.invokeTestMethod (TestClassMethodsRunner.java:71)
4XESTACKTRACE          at
org/junit/internal/runners/TestClassMethodsRunner.run (TestClassMethodsRunner.java:35)
4XESTACKTRACE          at
org/junit/internal/runners/TestClassRunner$1.runUnprotected (TestClassRunner.java:42)
4XESTACKTRACE          at
org/junit/internal/runners/BeforeAndAfterRunner.runProtected (BeforeAndAfterRunner.java:34)
4XESTACKTRACE          at
org/junit/internal/runners/TestClassRunner.run(TestClassRunner.java: 52)
4XESTACKTRACE          at
org/eclipse/jdt/internal/junit4/runner/JUnit4TestReference.run (JUnit4TestReference.java:38)
4XESTACKTRACE          at
org/eclipse/jdt/internal/junit/runner/TestExecution.run (TestExecution.java:38)
4XESTACKTRACE          at
org/eclipse/jdt/internal/junit/runner/RemoteTestRunner.runTests (RemoteTestRunner.java:460)
4XESTACKTRACE          at
org/eclipse/jdt/internal/junit/runner/RemoteTestRunner.runTests (RemoteTestRunner.java:673)
4XESTACKTRACE          at
org/eclipse/jdt/internal/junit/runner/RemoteTestRunner.run (RemoteTestRunner.java:386)
4XESTACKTRACE          at
org/eclipse/jdt/internal/junit/runner/RemoteTestRunner.main (RemoteTestRunner.java:196)
3XMTHREADINFO      "Finalizer thread" (TID:0x41B36200,
sys_thread_t:0x41DE154C, state:B, native ID:0x00000FF8) prio=5
4XESTACKTRACE          at
java/lang/ClassLoader.loadClass(ClassLoader.java:563(Compiled Code))
4XESTACKTRACE          at java/lang/Class.forNameImpl(Native Method)
4XESTACKTRACE at java/lang/Class.forName(Class.java:160 (Compiled
Code))
4XESTACKTRACE          at
org/apache/openjpa/lib/util/TemporaryClassLoader.loadClass (TemporaryClassLoader.java:55(Compiled
Code))
4XESTACKTRACE          at
org/apache/openjpa/lib/util/TemporaryClassLoader.loadClass (TemporaryClassLoader.java:40(Compiled
Code))
4XESTACKTRACE          at java/lang/Class.forNameImpl(Native Method)
4XESTACKTRACE at java/lang/Class.forName(Class.java:160 (Compiled
Code))
4XESTACKTRACE          at
org/apache/openjpa/enhance/PCClassFileTransformer.needsEnhance (PCClassFileTransformer.java:171(Compiled
Code))
4XESTACKTRACE          at
org/apache/openjpa/enhance/PCClassFileTransformer.transform (PCClassFileTransformer.java:117(Compiled
Code))
4XESTACKTRACE          at
sun/instrument/TransformerManager.transform(TransformerManager.java: 141(Compiled
Code))
4XESTACKTRACE          at
sun/instrument/InstrumentationImpl.transform (InstrumentationImpl.java:174(Compiled
Code))
4XESTACKTRACE at com/ibm/oti/vm/VM.findClassOrNull(Native Method)
4XESTACKTRACE          at
com/ibm/oti/vm/BootstrapClassLoader.loadClass (BootstrapClassLoader.java:64(Compiled
Code))
4XESTACKTRACE          at
java/lang/ref/ReferenceQueue.enqueue(ReferenceQueue.java:125)
4XESTACKTRACE          at
java/lang/ref/Reference.enqueueImpl(Reference.java:93)
--
Best regards,
Vlad Tatavu
Provisioning & Orchestration Development, IBM Tivoli Toronto
[EMAIL PROTECTED]
Office (905) 413-3853



"Marc Prud'hommeaux" <[EMAIL PROTECTED]>
Sent by: "Marc Prud'hommeaux" <[EMAIL PROTECTED]>
08/01/2007 03:17 PM
Please respond to
open-jpa-dev@incubator.apache.org


To
open-jpa-dev@incubator.apache.org
cc

Subject
Re: Deadlock when insert in t1 and find in t2






Vlad-

I didn't get any attachments in that last message (perhaps they were
stripped by the list server).

It might be interesting the see the java stack trace parts of the JVM
dump, in case that might shed light on the situation.

Also, what database are you using? It could be that the deadlock is
happening somewhere in the JDBC driver code as well...



On Jan 8, 2007, at 11:20 AM, Vlad Tatavu wrote:


My test program runs in a standalone env, local transactions.  Here
are the files:


--
Best regards,
Vlad Tatavu
Provisioning & Orchestration Development, IBM Tivoli Toronto
[EMAIL PROTECTED]
Office (905) 413-3853


"Kevin Sutter" <[EMAIL PROTECTED]>
08/01/2007 02:01 PM
Please respond to
open-jpa-dev@incubator.apache.org


To
open-jpa-dev@incubator.apache.org
cc
Subject
Re: Deadlock when insert in t1 and find in t2





Hi Vlad,
Can you provide a bit more information?  Are you running in a managed
environment or a standalone environment?  Are these JTA
transactions or
Local transactions?  What does your test program look like?  What
about the
Entities?  Maybe you can attach them to your next reply?

I see that you are using the J9 JVM.  I haven't tried that yet.
I've been
using the "standard" IBM JVM 1.5 at SR3 (or above).  I doubt that
this would
make a different, but it might be useful to try this JVM as a test.

What you are describing is basic JPA functionality, so there must be
something unique with your application or environment.

Thanks,
Kevin

On 1/8/07, Vlad Tatavu <[EMAIL PROTECTED]> wrote:

I have a simple test program that uses OpenJPA 0.9.6 to insert an
object
into a db in one transaction (t1) and retrieve it in another
transaction
(t2).  The program hangs in 30-50% of the executions right before
the call
to entitymanager.find() (used to retrieve the object in t2).  By
looking
at the JVM dump, I can see the following deadlock:
1LKDEADLOCK    Deadlock detected !!!
NULL           ---------------------
NULL
2LKDEADLOCKTHR  Thread "main" (0x0015EC00)
3LKDEADLOCKWTR    is waiting for:
4LKDEADLOCKMON      sys_mon_t:0x41E40548 infl_mon_t: 0x41E40588:
4LKDEADLOCKOBJ      java/lang/[EMAIL PROTECTED]/00D4101C:
3LKDEADLOCKOWN    which is owned by:
2LKDEADLOCKTHR  Thread "Finalizer thread" (0x41B36200)
3LKDEADLOCKWTR    which is waiting for:
4LKDEADLOCKMON      sys_mon_t:0x0035CD38 infl_mon_t: 0x0035CD78:
4LKDEADLOCKOBJ      sun/misc/Launcher
[EMAIL PROTECTED]/00D4E5BC:
3LKDEADLOCKOWN    which is owned by:
2LKDEADLOCKTHR  Thread "main" (0x0015EC00)

I'm using IBM JVM 5 (J2RE 5.0 IBM J9 2.3 Windows XP x86-32 build
j9vmwi3223-20061001) and OpenJPA Runtime Enhancement.

Is this a known issue?

I can provide the test program, persistence.xml, etc.

--
Best regards,
Vlad Tatavu
Provisioning & Orchestration Development, IBM Tivoli Toronto
[EMAIL PROTECTED]
Office (905) 413-3853





Reply via email to