Deadlock in Devart.Common.DbConnectionPool.GetObject()

Discussion of open issues, suggestions and bugs regarding ADO.NET provider for Oracle
Pinturiccio
Devart Team
Posts: 2192
Joined: Wed 02 Nov 2011 09:44

Re: Deadlock in Devart.Common.DbConnectionPool.GetObject()

Post by Pinturiccio » Thu 15 Feb 2018 15:08

We plan to create and send the build to you at the beginning of the next week.

dabensys
Posts: 11
Joined: Fri 22 Dec 2017 16:16

Re: Deadlock in Devart.Common.DbConnectionPool.GetObject()

Post by dabensys » Fri 16 Feb 2018 15:37

Thank you. Please provide some insight into the nature of the fix once it is made so that we can properly scope our testing effort.

Pinturiccio
Devart Team
Posts: 2192
Joined: Wed 02 Nov 2011 09:44

Re: Deadlock in Devart.Common.DbConnectionPool.GetObject()

Post by Pinturiccio » Tue 20 Feb 2018 16:49

We have answered you via e-mail.

dabensys
Posts: 11
Joined: Fri 22 Dec 2017 16:16

Re: Deadlock in Devart.Common.DbConnectionPool.GetObject()

Post by dabensys » Thu 07 Jun 2018 00:46

Our client has been testing the patch for over a month now. They continue to have the same deadlock issue as I originally reported. The patch does not appear to have corrected the issue. Please advise.

dabensys
Posts: 11
Joined: Fri 22 Dec 2017 16:16

Re: Deadlock in Devart.Common.DbConnectionPool.GetObject()

Post by dabensys » Thu 07 Jun 2018 00:48

Here is a snippet of the deadlock reported by windbg:

CLR thread 0x56 holds the lock on SyncBlock 000000000ebc07e8 OBJ:00000003028aca78[Devart.Data.Oracle.OracleInternalConnection]
...and is waiting for the lock on SyncBlock 000000000e88a0d8 OBJ:00000001804dbbf0[System.Collections.ArrayList]
CLR thread 0x27 holds the lock on SyncBlock 000000000e88a0d8 OBJ:00000001804dbbf0[System.Collections.ArrayList]
...and is waiting for the lock on SyncBlock 000000000ebc07e8 OBJ:00000003028aca78[Devart.Data.Oracle.OracleInternalConnection]
CLR Thread 0x56 is waiting at Devart.Common.DbConnectionPool.RemoveObject(System.Object)(+0x8 IL,+0x31 Native) CLR Thread 0x27 is waiting at Devart.Common.DbConnectionPoolGroup.a(Devart.Common.DbConnectionPool)(+0x25 IL,+0xa2 Native)

Pinturiccio
Devart Team
Posts: 2192
Joined: Wed 02 Nov 2011 09:44

Re: Deadlock in Devart.Common.DbConnectionPool.GetObject()

Post by Pinturiccio » Fri 15 Jun 2018 08:42

Sorry for the late response. Without a test project, which can consistently reproduce the issue we can make fixes only like "shooting in the dark". We have found a place that potentially can cause a deadlock and fixed it. We have sent you internal assemblies with the fix. We are studying our pooling code and cannot find other places that potentially can cause a deadlock.
Please make sure that your application on your client computer uses the Devart assemblies with these changes at runtime.

Post Reply