My Oracle Support Banner

Java-level deadlock with 11.2 (Doc ID 1271651.1)

Last updated on JANUARY 30, 2022

Applies to:

JDBC - Version and later
Information in this document applies to any platform.


JDBC application is running into a Java-level deadlock when trying to do the following scenario.


Two different oracle.sql.ARRAY Objects were created using two different physical Connections
For example:
Con1: create oracle.sql.ARRAY A
Con2: create oracle.sql.ARRAY B

Then getting Connections later in the application in the inverse order and try to write
an Array on the Connection at the same time.
Con1: write oracle.sql.ARRAY B
Con2: write oracle.sql.ARRAY A

Stack trace:-

Found one Java-level deadlock:
waiting to lock monitor 0x01a86e78 (object 0xe33740e8, a oracle.jdbc.driver.T4CConnection),
which is held by "DeblobberThread-3"
waiting to lock monitor 0x02d1ba90 (object 0xe31729d8, a oracle.jdbc.driver.T4CConnection),
which is held by "DeblobberThread-5"

Java stack information for the threads listed above:
at oracle.jdbc.oracore.OracleTypeADT.linearize(
- waiting to lock <0xe33740e8> (a oracle.jdbc.driver.T4CConnection)
at oracle.sql.ArrayDescriptor.toBytes(
at oracle.sql.ARRAY.toBytes(
- locked <0xe31729d8> (a oracle.jdbc.driver.T4CConnection)
at oracle.jdbc.driver.OraclePreparedStatement.setArrayCritical(
at oracle.jdbc.driver.OraclePreparedStatement.setARRAYInternal(
- locked <0xe31729d8> (a oracle.jdbc.driver.T4CConnection)
at oracle.jdbc.driver.OraclePreparedStatement.setArrayInternal(
at oracle.jdbc.driver.OracleCallableStatement.setArray(
at oracle.jdbc.driver.OraclePreparedStatementWrapper.setArray(


Upgraded the Oracle JDBC driver from 10.2 to 11.2.


To view full details, sign in with your My Oracle Support account.

Don't have a My Oracle Support account? Click to get started!

In this Document

My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.