[Mono-devel-list] Problems with OracleClient

Daniel Morgan danielmorgan at verizon.net
Tue Jan 6 22:03:20 EST 2004


If I recall the problem was with winelib having its own implementation of
pthreads which conflicted with mono and libgc.  See the mono-winforms-list
for more info.

If your patch works for you please commit.

-----Original Message-----
From: mono-devel-list-admin at lists.ximian.com
[mailto:mono-devel-list-admin at lists.ximian.com]On Behalf Of Jörg
Rosenkranz
Sent: Thursday, December 18, 2003 9:33 AM
To: mono-devel-list at ximian.com
Subject: [Mono-devel-list] Problems with OracleClient


Hi all,

We are running into several problems regarding OracleClient.
Our initial problem was "ORA-01000: maximum open cursors exceeded".
After some research I've found out that Dispose of OciStatementHandle
objects is nearly never called. All handles are disposed by the
Finalizer which leads to this problem if many statements are fired in
short intervals. I have filed following bug report for this:

http://bugzilla.ximian.com/show_bug.cgi?id=52288

I have created the attached patch to fix this problem. This patch now
leads to the following problem in our real world app which is using
different threads (each one with it's own connection):

Segmentation fault with message
ORA-21500: internal error code, arguments: [ttcdrv-recursivecall], [],
[], [], [], [], [], [] in OCIStmtExecute

This error occurs after some time and I am not able to reproduce it in
a simple test case. The crash never happens when I let the garbage
collector dispose the handles.

After some research I have found out that libcntsh.so (which
OracleClient PInvokes into) is linked against libpthreads.so.
I remember that there were problems using code that is compiled without
the garbage collector includes.

Is this anything that rings a bell for anyone? Is there a way to fix
this?

Please do not commit this patch ;-)

Thanks,
Joerg.





More information about the Mono-devel-list mailing list