Bug #17709 Found one Java-level deadlock
Submitted: 24 Feb 2006 19:41 Modified: 31 Mar 2014 11:03
Reporter: Sergey Vladimirov Email Updates:
Status: Duplicate Impact on me:
None 
Category:Connector / J Severity:S1 (Critical)
Version:5.0.0-night 2006/02/18 OS:Linux (Linux)
Assigned to: Alexander Soklakov CPU Architecture:Any

[24 Feb 2006 19:41] Sergey Vladimirov
Description:
Found one Java-level deadlock:
=============================
"http-8080-Processor22":
  waiting to lock monitor 0x0813b8cc (object 0x84400ad8, a com.mysql.jdbc.Connection),
  which is held by "http-8080-Processor17"
"http-8080-Processor17":
  waiting to lock monitor 0x0813b9cc (object 0x844032b8, a java.lang.Object),
  which is held by "http-8080-Processor22"

Java stack information for the threads listed above:
===================================================
"http-8080-Processor22":
        at com.mysql.jdbc.Connection.getCatalog(Connection.java:3182)
        - waiting to lock <0x84400ad8> (a com.mysql.jdbc.Connection)
        at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:998)
        - locked <0x844032b8> (a java.lang.Object)
        - locked <0x84cab988> (a com.mysql.jdbc.ServerPreparedStatement)
        at com.mysql.jdbc.jdbc2.optional.PreparedStatementWrapper.executeQuery(PreparedStatementWrapper.java:811)
        at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:139)
        at org.hibernate.loader.Loader.getResultSet(Loader.java:1669)

...

"http-8080-Processor17":
        at com.mysql.jdbc.ServerPreparedStatement.serverPrepare(ServerPreparedStatement.java:1311)
        - waiting to lock <0x844032b8> (a java.lang.Object)
        at com.mysql.jdbc.ServerPreparedStatement.<init>(ServerPreparedStatement.java:316)
        at com.mysql.jdbc.Connection.prepareStatement(Connection.java:4365)
        - locked <0x84400ad8> (a com.mysql.jdbc.Connection)
        at com.mysql.jdbc.Connection.prepareStatement(Connection.java:4303)
        - locked <0x84400ad8> (a com.mysql.jdbc.Connection)
        at com.mysql.jdbc.jdbc2.optional.ConnectionWrapper.prepareStatement(ConnectionWrapper.java:633)
        at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:442)

How to repeat:
no test case.
[24 Feb 2006 19:45] Sergey Vladimirov
If it can help...

I'm using XAConnections, but without any transactions (They are not enlisted in TM).
[24 Feb 2006 19:52] Mark Matthews
It appears you're sharing connections across threads, is this the case?
[24 Feb 2006 19:55] Sergey Vladimirov
I don't want to share them, but it is possible due to some bugs in my connection pool or/and in XAConnection implementation.
[3 Apr 2006 21:05] Mark Matthews
We're going to tackle this when we fix BUG#18719 in Connector/J 5.0, so I'm consolidating all thread deadlock reports into this one bug, as they're all related.
[4 Apr 2006 21:47] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/4463
[5 Apr 2006 1:00] Mark Matthews
Please test propsed fixes in this nightly build:

http://downloads.mysql.com/snapshots/mysql-connector-java-5.0/mysql-connector-java-5.0-nig...
[5 May 2006 23:01] Bugs System
No feedback was provided for this bug for over a month, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".
[31 Mar 2014 11:03] Alexander Soklakov
Duplicate of Bug#18719