OracleTransaction.Rollback() hangs indefinitely, if I call it immediately after catching an OverflowException (on INSERT). I don't have this problem with constraint violations or other exceptions.
Is it possible for ROLLBACK to stall waiting for a lock or transaction? Snooping the network connection, I do not see any queries happening, including ROLLBACK, but the TNS protocol is undocumented so this doesn't prove anything. (I don't *really* want to dig through Oracle trace logs if I can avoid it...)
I am using dotConnect for Oracle 7.8.287 with Mono 2.10.9 and .NET (identical results).
This is the trace after catching the exception. The last line in the trace is the last line of code executed--the function never returns. (It may be in an infinite loop inside that function, I am still investigating.)
Code: Select all
[0x7f71ec7bb700:] EXCEPTION handling: System.OverflowException: Value was either too large or too small for a OracleNumber.
EXCEPTION: finally clause 1 of Devart.Data.Oracle.OracleCommand:ExecuteNonQuery ()
EXCEPTION: finally clause 2 of derby.XmlStuffer.EventStuffer:Insert (derby.DcfUtils.TestEventData,bool,System.Data.Common.DbTransaction)
EXCEPTION: catch found at clause 0 of derby.XmlStuffer.DatabaseWriter:_Insert (derby.DcfUtils.IDcfRecord,bool)
[0x7f71ec7bb700: 8.82827 13] ENTER: Devart.Data.Oracle.OracleTransaction:Rollback ()(this:0x7f71ec52ee00[Devart.Data.Oracle.OracleTransaction domain-derby.XmlStuffer.dll], )
[0x7f71ec7bb700: 8.82856 14] ENTER: Devart.Data.Oracle.OracleTransaction:Dispose (bool)(this:0x7f71ec52ee00[Devart.Data.Oracle.OracleTransaction domain-derby.XmlStuffer.dll], 1, )
/tmp/nunit20/ShadowCopyCache/31344_635113120039978260/Tests/assembly/shadow/22a39526/80d266d6_a271f3f0_00000001/derby.XmlStuffer.dll Information : 0 : Rolling back
[0x7f71ec7bb700: 8.82924 15] ENTER: Devart.Data.Oracle.OracleTransaction:a ()(this:0x7f71ec52ee00[Devart.Data.Oracle.OracleTransaction domain-derby.XmlStuffer.dll], )
[0x7f71ec7bb700: 8.82926 16] ENTER: (wrapper remoting-invoke-with-check) Devart.Data.Oracle.OracleConnection:a ()(this:0x7f71ed181900[Devart.Data.Oracle.OracleConnection domain-derby.XmlStuffer.dll], )
[0x7f71ec7bb700: 8.82927 17] ENTER: Devart.Data.Oracle.OracleConnection:a ()(this:0x7f71ed181900[Devart.Data.Oracle.OracleConnection domain-derby.XmlStuffer.dll], )
[0x7f71ec7bb700: 8.82928 17] LEAVE: Devart.Data.Oracle.OracleConnection:a ()[Devart.Data.Oracle.OracleInternalConnection:0x7f71ed10c6e0]
[0x7f71ec7bb700: 8.82928 16] LEAVE: (wrapper remoting-invoke-with-check) Devart.Data.Oracle.OracleConnection:a ()[Devart.Data.Oracle.OracleInternalConnection:0x7f71ed10c6e0]
[0x7f71ec7bb700: 8.83125 16] ENTER: Devart.Data.Oracle.OracleInternalConnection:Rollback ()(this:0x7f71ed10c6e0[Devart.Data.Oracle.OracleInternalConnection domain-derby.XmlStuffer.dll], )
[0x7f71ec7bb700: 8.83137 17] ENTER: Devart.Data.Oracle.OracleMonitor:a (Devart.Common.MonitorTracePoint,System.Data.IDbConnection)(0, [Devart.Data.Oracle.OracleConnection:0x7f71ed181900], )
[0x7f71ec7bb700: 8.83138 18] ENTER: Devart.Data.Oracle.OracleMonitor:a ()()
[0x7f71ec7bb700: 8.83139 18] LEAVE: Devart.Data.Oracle.OracleMonitor:a ()[OBJECT:(nil)]
[0x7f71ec7bb700: 8.83149 17] LEAVE: Devart.Data.Oracle.OracleMonitor:a (Devart.Common.MonitorTracePoint,System.Data.IDbConnection)
[0x7f71ec7bb700: 8.83272 17] ENTER: Devart.Data.Oracle.cr:j ()(this:0x7f71ed10c640[Devart.Data.Oracle.cr domain-derby.XmlStuffer.dll], )
[0x7f71ec7bb700: 8.83274 18] ENTER: Devart.Data.Oracle.cr:m ()(this:0x7f71ed10c640[Devart.Data.Oracle.cr domain-derby.XmlStuffer.dll], )
[0x7f71ec7bb700: 8.83275 18] LEAVE: Devart.Data.Oracle.cr:m ()
[0x7f71ec7bb700: 8.83276 18] ENTER: Devart.Data.Oracle.bq:b (int)(this:0x7f71ed139600[Devart.Data.Oracle.bq domain-derby.XmlStuffer.dll], 0, )
[0x7f71ec7bb700: 8.83276 18] LEAVE: Devart.Data.Oracle.bq:b (int)
[0x7f71ec7bb700: 8.83277 18] ENTER: Devart.Data.Oracle.bh:.ctor (Devart.Data.Oracle.bq)(this:0x7f71ed06f4d0[Devart.Data.Oracle.bh domain-derby.XmlStuffer.dll], [Devart.Data.Oracle.bq:0x7f71ed139600], )
[0x7f71ec7bb700: 8.83278 19] ENTER: Devart.Data.Oracle.cg:.ctor (Devart.Data.Oracle.bq)(this:0x7f71ed06f4d0[Devart.Data.Oracle.bh domain-derby.XmlStuffer.dll], [Devart.Data.Oracle.bq:0x7f71ed139600], )
[0x7f71ec7bb700: 8.83279 19] LEAVE: Devart.Data.Oracle.cg:.ctor (Devart.Data.Oracle.bq)
[0x7f71ec7bb700: 8.83279 18] LEAVE: Devart.Data.Oracle.bh:.ctor (Devart.Data.Oracle.bq)
[0x7f71ec7bb700: 8.83280 18] ENTER: Devart.Data.Oracle.bh:b ()(this:0x7f71ed06f4d0[Devart.Data.Oracle.bh domain-derby.XmlStuffer.dll], )
[0x7f71ec7bb700: 8.83280 19] ENTER: Devart.Data.Oracle.cg:b ()(this:0x7f71ed06f4d0[Devart.Data.Oracle.bh domain-derby.XmlStuffer.dll], )
[0x7f71ec7bb700: 8.83281 20] ENTER: Devart.Data.Oracle.ar:a (byte)(this:0x7f71ecbda990[Devart.Data.Oracle.ar domain-derby.XmlStuffer.dll], 3, )
[0x7f71ec7bb700: 8.83282 21] ENTER: Devart.Data.Oracle.d:a (byte)(this:0x7f71ecbc4f50[Devart.Data.Oracle.d domain-derby.XmlStuffer.dll], 3, )
[0x7f71ec7bb700: 8.83283 21] LEAVE: Devart.Data.Oracle.d:a (byte)
[0x7f71ec7bb700: 8.83283 20] LEAVE: Devart.Data.Oracle.ar:a (byte)
[0x7f71ec7bb700: 8.83284 19] LEAVE: Devart.Data.Oracle.cg:b ()
[0x7f71ec7bb700: 8.83284 19] ENTER: Devart.Data.Oracle.ar:a (byte)(this:0x7f71ecbda990[Devart.Data.Oracle.ar domain-derby.XmlStuffer.dll], 15, )
[0x7f71ec7bb700: 8.83285 20] ENTER: Devart.Data.Oracle.d:a (byte)(this:0x7f71ecbc4f50[Devart.Data.Oracle.d domain-derby.XmlStuffer.dll], 15, )
[0x7f71ec7bb700: 8.83285 20] LEAVE: Devart.Data.Oracle.d:a (byte)
[0x7f71ec7bb700: 8.83286 19] LEAVE: Devart.Data.Oracle.ar:a (byte)
[0x7f71ec7bb700: 8.83286 19] ENTER: Devart.Data.Oracle.ar:a (byte)(this:0x7f71ecbda990[Devart.Data.Oracle.ar domain-derby.XmlStuffer.dll], 0, )
[0x7f71ec7bb700: 8.83287 20] ENTER: Devart.Data.Oracle.d:a (byte)(this:0x7f71ecbc4f50[Devart.Data.Oracle.d domain-derby.XmlStuffer.dll], 0, )
[0x7f71ec7bb700: 8.83287 20] LEAVE: Devart.Data.Oracle.d:a (byte)
[0x7f71ec7bb700: 8.83287 19] LEAVE: Devart.Data.Oracle.ar:a (byte)
[0x7f71ec7bb700: 8.83288 18] LEAVE: Devart.Data.Oracle.bh:b ()
[0x7f71ec7bb700: 8.83288 18] ENTER: Devart.Data.Oracle.bh:c ()(this:0x7f71ed06f4d0[Devart.Data.Oracle.bh domain-derby.XmlStuffer.dll], )
[0x7f71ec7bb700: 8.83289 19] ENTER: Devart.Data.Oracle.ay:c ()(this:0x7f71ecbda9c0[Devart.Data.Oracle.ay domain-derby.XmlStuffer.dll], )
[0x7f71ec7bb700: 8.83289 20] ENTER: Devart.Data.Oracle.d:h ()(this:0x7f71ecbc4f50[Devart.Data.Oracle.d domain-derby.XmlStuffer.dll], )
[0x7f71ec7bb700: 8.83290 21] ENTER: Devart.Data.Oracle.d:a (byte[],int,int)(this:0x7f71ecbc4f50[Devart.Data.Oracle.d domain-derby.XmlStuffer.dll], 0x7f71ec34e370, 0, 1, )
[0x7f71ec7bb700: 8.83291 22] ENTER: Devart.Data.Oracle.d:b ()(this:0x7f71ecbc4f50[Devart.Data.Oracle.d domain-derby.XmlStuffer.dll], )
[0x7f71ec7bb700: 8.83291 23] ENTER: Devart.Data.Oracle.y:b ()(this:0x7f71ecbc4f50[Devart.Data.Oracle.d domain-derby.XmlStuffer.dll], )
[0x7f71ec7bb700: 8.83292 24] ENTER: Devart.Data.Oracle.bq:n ()(this:0x7f71ed139600[Devart.Data.Oracle.bq domain-derby.XmlStuffer.dll], )
[0x7f71ec7bb700: 8.83292 24] LEAVE: Devart.Data.Oracle.bq:n ()
[0x7f71ec7bb700: 8.83293 24] ENTER: Devart.Data.Oracle.bq:a (byte[],int)(this:0x7f71ed139600[Devart.Data.Oracle.bq domain-derby.XmlStuffer.dll], 0x7f71ec529000, 1339, )
[0x7f71ec7bb700: 8.83313 24] LEAVE: Devart.Data.Oracle.bq:a (byte[],int)
[0x7f71ec7bb700: 8.83314 23] LEAVE: Devart.Data.Oracle.y:b ()
[0x7f71ec7bb700: 8.83314 22] LEAVE: Devart.Data.Oracle.d:b ()
[0x7f71ec7bb700: 8.83315 22] ENTER: Devart.Data.Oracle.bq:a (byte&)(this:0x7f71ed139600[Devart.Data.Oracle.bq domain-derby.XmlStuffer.dll], [BYREF:0x7f71ec7b9597], )
[0x7f71ec7bb700: 8.83316 23] ENTER: Devart.Data.Oracle.bq:a (byte[],int,int)(this:0x7f71ed139600[Devart.Data.Oracle.bq domain-derby.XmlStuffer.dll], 0x7f71ec510000, 0, 8, )