Page 1 of 1

DevArt and OCI - deadlock (DevArt 9.4.326.0)

Posted: Fri 08 Sep 2017 14:13
by BGrojer
We have seen in production (if DevArt is used together with OCI) we run into deadlocks.
Timeouts in DevArt are not taken into account and reasoned by that application is getting completly stuck.

Image

Most of the time we are stuck in:

OciCall.dll!OciDynamicType.OCIDescriptorFree(System.Runtime.InteropServices.HandleRef value, int value)
Devart.Data.Oracle.dll!Devart.Data.Oracle.o.j()

and/or

OciCall.dll!OciDynamicType.OCITransRollback(System.Runtime.InteropServices.HandleRef value, System.Runtime.InteropServices.HandleRef value, uint value)
Devart.Data.Oracle.dll!Devart.Data.Oracle.dd.l()

If direct mode is used the problem does not appear (but we cannot because of Oracle RAC).

We have created a reproduce here:
https://goo.gl/zfXnXj (create schema with the provided sql script, , run the console application)

We also noticed that all other connection are blocked if that happens in getting
Devart.Data.Oracle.dll!Devart.Common.DbConnectionPoolGroup.a(Devart.Common.DbConnectionPool A_0)
Devart.Data.Oracle.dll!Devart.Common.DbConnectionPoolGroup.a(object A_0)

and

Devart.Data.Oracle.dll!Devart.Common.DbConnectionPool.GetObject(Devart.Common.DbConnectionBase owningConnection)
Devart.Data.Oracle.dll!Devart.Common.DbConnectionFactory.b(Devart.Common.DbConnectionBase A_0)Devart.Data.Oracle.dll!Devart.Common.DbConnectionClosed.Open(Devart.Common.DbConnectionBase outerConnection)

The big issue is that we have no way to recover from our end in that situation. Help would be highly appreciated.

Re: DevArt and OCI - deadlock (DevArt 9.4.326.0)

Posted: Mon 11 Sep 2017 15:44
by BGrojer
Looks like this is happening \ related to OracleXml datatype if disposed is not called. Why this is resulting in a deadlock \ and works with directmode is still unclear.

Re: DevArt and OCI - deadlock (DevArt 9.4.326.0)

Posted: Tue 12 Sep 2017 10:05
by Shalex
We are processing your request.

Re: DevArt and OCI - deadlock (DevArt 9.4.326.0)

Posted: Mon 18 Sep 2017 14:21
by Pinturiccio
Your sample successfully runs in our environment with the OCI mode. Please tell us your Oracle server and Client version. Tell us also the Oracle Client bitness (32bit or 64bit).