Java-level Deadlock Between oracle.classloader.PolicyClassLoader and sun.net.www.protocol.file.Handler With JDBC 10.2.0.5 (Doc ID 1455696.1)

Last updated on MARCH 08, 2017

Applies to:

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

Symptoms

When using Application Server 10.1.3.5 with Oracle JDBC driver 10.2.0.5, a Java-level deadlock occurs:

"RMI RenewClean-[xx.xx.xxx.xxx:46553]":
    waiting to lock monitor 0x00c75a60 (object 0x693f8348, a
  oracle.classloader.PolicyClassLoader),
    which is held by "Finalizer"
  "Finalizer":
    waiting to lock monitor 0x02d2b298 (object 0x693f8a40, a
  sun.net.www.protocol.file.Handler),
    which is held by "WorkExecutorWorkerThread-7"
  "WorkExecutorWorkerThread-7":
    waiting to lock monitor 0x00c75a60 (object 0x693f8348, a
  oracle.classloader.PolicyClassLoader),
    which is held by "Finalizer"


  Java stack information for the threads listed above:
  ===================================================
  "RMI RenewClean-[xx.xx.xxx.xxx:46553]":
   at oracle.classloader.PolicyClassLoader.internalLoadClass(PolicyClassLoader.java:1706)
   - waiting to lock <0x693f8348> (a oracle.classloader.PolicyClassLoader)
   at oracle.classloader.PolicyClassLoader.access$000(PolicyClassLoader.java:136)
  ...
   at java.lang.ClassLoader.loadClass(ClassLoader.java:295)
   - locked <0xe4dee7f0> (a sun.rmi.server.LoaderHandler$Loader)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
  ...
   at java.lang.Thread.run(Thread.java:662)
 
   "Finalizer":
   at java.net.URLStreamHandler.getHostAddress(URLStreamHandler.java:412)
   - waiting to lock <0x693f8a40> (a sun.net.www.protocol.file.Handler)
   at java.net.URLStreamHandler.hostsEqual(URLStreamHandler.java:439)
   at sun.net.www.protocol.file.Handler.hostsEqual(Handler.java:117)
  ..
   at java.util.HashMap.get(HashMap.java:305)
   at oracle.classloader.PolicyClassLoader.getProtectionDomain(PolicyClassLoader.java:294)
   - locked <0x698e3cb0> (a java.util.HashMap)
   at oracle.classloader.PolicyClassLoader.defineClass(PolicyClassLoader.java:2350)
 
 
  "WorkExecutorWorkerThread-7":
   at oracle.classloader.PolicyClassLoader.internalLoadClass(PolicyClassLoader.java:1706)
   - waiting to lock <0x693f8348> (a oracle.classloader.PolicyClassLoader)
   at oracle.classloader.PolicyClassLoader.access$000(PolicyClassLoader.java:136)
  ...
   at oracle.classloader.PolicyClassLoader.loadClass(PolicyClassLoader.java:1667)
   at java.net.URL.getURLStreamHandler(URL.java:1144)
   at java.net.URL.<init>(URL.java:393)
   at java.net.URL.<init>(URL.java:283)
   at java.net.URL.<init>(URL.java:306)
   at sun.net.www.protocol.file.Handler.openConnection(Handler.java:74)
   - locked <0x693f8a40> (a sun.net.www.protocol.file.Handler)
   at sun.net.www.protocol.file.Handler.openConnection(Handler.java:55)
   - locked <0x693f8a40> (a sun.net.www.protocol.file.Handler)
   at java.net.URL.openConnection(URL.java:945)
   at sun.security.provider.PolicyFile.canonicalizeCodebase(PolicyFile.java:1799)
  ..
   at oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1080)
   at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:485)
   at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:218)
   at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3460)
   - locked <0x69b7d350> (a oracle.jdbc.driver.T4CCallableStatement)
   - locked <0x69729a08> (a oracle.jdbc.driver.T4CConnection)
   at oracle_jdbc_driver_T4CCallableStatement_Proxy.executeQuery()
   at oracle.jms.AQjmsConsumer.dequeue(AQjmsConsumer.java:1601)
   at oracle.jms.AQjmsConsumer.receiveFromAQ(AQjmsConsumer.java:916)

Changes

 Oracle Application Server upgraded from 10.1.3.4 to 10.1.3.5, and JDBC driver upgraded to 10.2.0.5.

Cause

Sign In with your My Oracle Support account

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

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms