Skip to content

DeadLock in JDBC driver close() vs object finalizer #2265

@karel-haruda-abra

Description

@karel-haruda-abra

Driver version

12.4.1.jre11

SQL Server version

Windows Server 2019 Standard (10.0)

Client Operating System

Windows Server 2019 Standard (10.0)

JAVA/JVM version

JAVA 11

Problem description

A deadlock occurs in the JDBC driver

Error message/stack trace

I have only call stacks of threads which are in deadlock

Thread 1
ID16 ABRABI - Database connection checker WAITING java.util.concurrent.locks.ReentrantLock$NonfairSync@444316f1 Finalizer ID3 0d 00:20:59,953

[email protected]/jdk.internal.misc.Unsafe.park(Native Method)
[email protected]/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
[email protected]/java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:885)
[email protected]/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:917)
[email protected]/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1240)
[email protected]/java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:267)
[email protected]/sun.security.ssl.SSLSocketImpl.waitForClose(SSLSocketImpl.java:1817)
[email protected]/sun.security.ssl.SSLSocketImpl.closeSocket(SSLSocketImpl.java:1795)
[email protected]/sun.security.ssl.SSLSocketImpl.shutdown(SSLSocketImpl.java:1750)
[email protected]/sun.security.ssl.SSLSocketImpl.bruteForceCloseInput(SSLSocketImpl.java:800)
[email protected]/sun.security.ssl.SSLSocketImpl.duplexCloseInput(SSLSocketImpl.java:780)
[email protected]/sun.security.ssl.SSLSocketImpl.close(SSLSocketImpl.java:590)
com.microsoft.sqlserver.jdbc.TDSChannel.disableSSL(IOBuffer.java:817)
com.microsoft.sqlserver.jdbc.TDSChannel.close(IOBuffer.java:2204)
com.microsoft.sqlserver.jdbc.SQLServerConnection.clearConnectionResources(SQLServerConnection.java:4542)
com.microsoft.sqlserver.jdbc.SQLServerConnection.close(SQLServerConnection.java:4526)
eu.abra.bologic.DBConnection.closeConnection(DBConnection.java:304)
eu.abra.bologic.DBConnection$Checker.run(DBConnection.java:486)

Thread 2
ID3 Finalizer WAITING java.util.concurrent.locks.ReentrantLock$NonfairSync@422dbc49 ABRABI - Database connection checker ID16 0d 00:00:07,359
[email protected]/jdk.internal.misc.Unsafe.park(Native Method)
[email protected]/java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
[email protected]/java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:885)
[email protected]/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:917)
[email protected]/java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1240)
[email protected]/java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:267)
com.microsoft.sqlserver.jdbc.TDSChannel$ProxyInputStream.readInternal(IOBuffer.java:1187)
com.microsoft.sqlserver.jdbc.TDSChannel$ProxyInputStream.read(IOBuffer.java:1183)
[email protected]/sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:484)
[email protected]/sun.security.ssl.SSLSocketInputRecord.readHeader(SSLSocketInputRecord.java:478)
[email protected]/sun.security.ssl.SSLSocketInputRecord.decode(SSLSocketInputRecord.java:160)
[email protected]/sun.security.ssl.SSLTransport.decode(SSLTransport.java:111)
[email protected]/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1511)
[email protected]/sun.security.ssl.SSLSocketImpl.waitForClose(SSLSocketImpl.java:1821)
[email protected]/sun.security.ssl.SSLSocketImpl.closeSocket(SSLSocketImpl.java:1795)
[email protected]/sun.security.ssl.SSLSocketImpl.shutdown(SSLSocketImpl.java:1750)
[email protected]/sun.security.ssl.SSLSocketImpl.bruteForceCloseInput(SSLSocketImpl.java:800)
[email protected]/sun.security.ssl.SSLSocketImpl.duplexCloseOutput(SSLSocketImpl.java:665)
[email protected]/sun.security.ssl.SSLSocketImpl.close(SSLSocketImpl.java:585)
[email protected]/sun.security.ssl.BaseSSLSocketImpl.finalize(BaseSSLSocketImpl.java:275)
[email protected]/java.lang.System$2.invokeFinalize(System.java:2138)
[email protected]/java.lang.ref.Finalizer.runFinalizer(Finalizer.java:87)
[email protected]/java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:171)

Metadata

Metadata

Assignees

No one assigned

    Labels

    BugA bug in the driver. A high priority item that one can expect to be addressed quickly.

    Type

    No type

    Projects

    Status

    Closed Issues

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions