Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NullReferenceException on Version10.GdsDatabase.BeginTransaction(TransactionParameterBuffer tpb) [DNET844] #777

Closed
firebird-automations opened this issue Aug 22, 2018 · 6 comments

Comments

@firebird-automations
Copy link

Submitted by: Christian B (buc)

It happens every few days, that we get NullReferenceException in our web-service. This happens on select and also on update (save changes). We can now only "fix" it, when we restart the web-service (pool).

Callstack - Select: It happens on ToList(), First(), FirstOrDefault()

System.NullReferenceException Void BeginTransaction(FirebirdSql.Data.Common.TransactionParameterBuffer) bei FirebirdSql.Data.Client.Managed.Version10.GdsTransaction.BeginTransaction(TransactionParameterBuffer tpb)
bei FirebirdSql.Data.Client.Managed.Version10.GdsDatabase.BeginTransaction(TransactionParameterBuffer tpb)
bei FirebirdSql.Data.FirebirdClient.FbTransaction.BeginTransaction()
bei FirebirdSql.Data.FirebirdClient.FbCommand.Prepare(Boolean returnsSet)
bei FirebirdSql.Data.FirebirdClient.FbCommand.ExecuteCommand(CommandBehavior behavior, Boolean returnsSet)
bei FirebirdSql.Data.FirebirdClient.FbCommand.ExecuteReader(CommandBehavior behavior)
bei System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)
bei System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext)
bei System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)
bei System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlan.Execute[TResultType](ObjectContext context, ObjectParameterCollection parameterValues)
bei System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)
bei System.Data.Entity.Core.Objects.ObjectQuery`1.<>c__DisplayClass7.<GetResults>b__5()
bei System.Data.Entity.Core.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
bei System.Data.Entity.Core.Objects.ObjectQuery`1.<System.Collections.Generic.IEnumerable<T>.GetEnumerator>b__0()
bei System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()
bei System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
bei System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)

Callstack - Update:

System.NullReferenceException Void BeginTransaction(FirebirdSql.Data.Common.TransactionParameterBuffer) bei FirebirdSql.Data.Client.Managed.Version10.GdsTransaction.BeginTransaction(TransactionParameterBuffer tpb)
bei FirebirdSql.Data.Client.Managed.Version10.GdsDatabase.BeginTransaction(TransactionParameterBuffer tpb)
bei FirebirdSql.Data.FirebirdClient.FbTransaction.BeginTransaction()
bei FirebirdSql.Data.FirebirdClient.FbConnectionInternal.BeginTransaction(IsolationLevel level, String transactionName)
bei FirebirdSql.Data.FirebirdClient.FbConnection.BeginDbTransaction(IsolationLevel isolationLevel)
bei System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)
bei System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.BeginTransaction(DbConnection connection, BeginTransactionInterceptionContext interceptionContext)
bei System.Data.Entity.Core.EntityClient.EntityConnection.BeginDbTransaction(IsolationLevel isolationLevel)
bei System.Data.Entity.Core.EntityClient.EntityConnection.BeginTransaction()
bei System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)
bei System.Data.Entity.Core.Objects.ObjectContext.SaveChangesToStore(SaveOptions options, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction)
bei System.Data.Entity.Core.Objects.ObjectContext.SaveChangesInternal(SaveOptions options, Boolean executeInExistingTransaction)
bei System.Data.Entity.Internal.InternalContext.SaveChanges()
bei BetAdmin.Data.BetAdminContext.SaveChanges()

@firebird-automations
Copy link
Author

Commented by: @cincuranet

1. Can you create reproducible test-case (even if it takes couple of runs to trigger the issue)?
2. Can you try with latest provider?

@firebird-automations
Copy link
Author

Modified by: @cincuranet

status: Open [ 1 ] => In Progress [ 3 ]

@firebird-automations
Copy link
Author

Commented by: Christian B (buc)

1. I can not replicate, i have no idea in which case i happens...
2. I will try, but this will take some time.

@firebird-automations
Copy link
Author

Commented by: Reinhard Gunacker (guni82)

We have the same Problem, from time to time we get this Exception. Once it happens it will happen again on the same command until the application is restarted.
Happens on starting a new Transaction:
con.BeginTransaction()

I tried but can't reproduce it reliably so far.

Not using Entity Framework
Provider: 6.1.0.0

System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
bei FirebirdSql.Data.Client.Managed.Version10.GdsTransaction.BeginTransaction(TransactionParameterBuffer tpb)
bei FirebirdSql.Data.Client.Managed.Version10.GdsDatabase.BeginTransaction(TransactionParameterBuffer tpb)
bei FirebirdSql.Data.FirebirdClient.FbTransaction.BeginTransaction()
bei FirebirdSql.Data.FirebirdClient.FbConnectionInternal.BeginTransaction(IsolationLevel level, String transactionName)
bei FirebirdSql.Data.FirebirdClient.FbConnection.BeginDbTransaction(IsolationLevel isolationLevel)
bei System.Data.Common.DbConnection.BeginTransaction()

@firebird-automations
Copy link
Author

Commented by: @cincuranet

I don't have anything to hold onto. If somebody has a memory dump, reproducible test case, etc. I'll reopen.

@firebird-automations
Copy link
Author

Modified by: @cincuranet

status: In Progress [ 3 ] => Closed [ 6 ]

resolution: Incomplete [ 4 ]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants