Background Thread Unhandled AccessViolationException
-
- Devart Team
- Posts: 1710
- Joined: Thu 03 Dec 2009 10:48
The test build includes the changes which may fix the problem with unhandled AccessViolationExceptions (these are the only changes compared to the original 2.50.30 build). Please try using this build in the highly loaded application and tell us whether access violation exceptions occur in this case.
-
- Devart Team
- Posts: 1710
- Joined: Thu 03 Dec 2009 10:48
Exception Info: System.AccessViolationException
Stack:
at Devart.Data.Linq.Provider.DataProvider.ExecuteQuery(CompiledQuery, System.Object[], System.Object[], System.Object)
at Devart.Data.Linq.Provider.DataProvider.ExecuteAllQueries(CompiledQuery, System.Object[])
Exception Info: System.InvalidOperationException
Stack:
at Devart.Common.DbConnectionInternal.d(System.Object)
at Devart.Common.DbConnectionPoolGroup.a(Devart.Common.DbConnectionPool)
at Devart.Common.DbConnectionPoolGroup.a(System.Object)
at System.Threading.ExecutionContext.runTryCode(System.Object)
at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode, CleanupCode, System.Object)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading._TimerCallback.PerformTimerCallback(System.Object)
Exception Info: System.AccessViolationException
Stack:
at Devart.Data.Linq.Provider.ObjectReader`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].k()
at Devart.Data.Linq.Provider.k+a.d()
at Devart.Data.Linq.Provider.k.e()
at Devart.Data.Linq.Provider.DataProvider.Dispose(Boolean)
at Devart.Data.Linq.DataContext.Dispose()
Stack:
at Devart.Data.Linq.Provider.DataProvider.ExecuteQuery(CompiledQuery, System.Object[], System.Object[], System.Object)
at Devart.Data.Linq.Provider.DataProvider.ExecuteAllQueries(CompiledQuery, System.Object[])
Exception Info: System.InvalidOperationException
Stack:
at Devart.Common.DbConnectionInternal.d(System.Object)
at Devart.Common.DbConnectionPoolGroup.a(Devart.Common.DbConnectionPool)
at Devart.Common.DbConnectionPoolGroup.a(System.Object)
at System.Threading.ExecutionContext.runTryCode(System.Object)
at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode, CleanupCode, System.Object)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading._TimerCallback.PerformTimerCallback(System.Object)
Exception Info: System.AccessViolationException
Stack:
at Devart.Data.Linq.Provider.ObjectReader`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].k()
at Devart.Data.Linq.Provider.k+a.d()
at Devart.Data.Linq.Provider.k.e()
at Devart.Data.Linq.Provider.DataProvider.Dispose(Boolean)
at Devart.Data.Linq.DataContext.Dispose()
-
- Devart Team
- Posts: 1710
- Joined: Thu 03 Dec 2009 10:48
-
- Posts: 60
- Joined: Mon 18 May 2009 13:17
Hello all,StanislavK wrote:We are investigating the possible ways of resolving these issues. We will post here when any new information is available.
I do have some similar issues concerning AccessViolationException when trying to dispose an oracleCommand.
You can easily similate this kind of exception when you do the following
1) create connection
2) create command + execute
3) do not dispose the connection/command
4) unplug your pc from the network, wait some time, plug back in
5) try to execute same command again --> this will indeed result in error
6) catch the error, and try to do the clean-up --> meaning try to dispose the oracleCommand now (which is in debug-mode still some valid object)
--> the oracleCommand.Dispose() throws AccessViolationException, and most strange thing --> it is not catchable ????
Code: Select all
try
{
//Clean up oracleCommand
if (this.oracleCommand != null)
{
this.oracleCommand.Dispose();
}
}
catch (AccessViolationException AccessViolex)
{
//not possible to catch anything, and silently swallow exception
}
catch (Exception ex)
{
//not possible to catch anything, and silently swallow exception
}
--> if I just could catch the "AccessViolationException" in my case, everything should be ok.
Do i do something wrong in the code to try catching this exception.
Currently i do not have the exacte exception message, but it mentioned certainly some oracle client dll's.
my set-up was the next
*) oracle client 10.2
*) oci-mode (not direct mode)
*) oracle server 11
*) windows XP, vs.net 2010, .NET 4.0
*) Devart.Data.Oracle: v 6.60.258.0
thx
Fred