[firebase-br] Bug .NET Data Acess

Paulo Quicoli pauloquicoli em gmail.com
Qui Set 29 16:17:05 -03 2016


Marcos, cara... nunca tive problema... e uso Firebird com .net há bastante
tempo....
Isso está acontecendo qdo executa uma sentença em específico (que demora),
como que vc está usando? sempre abre e fecha transação? Está dentro de um
bloco using?

Vamos pensar juntos no que pode ser...



Em 29 de setembro de 2016 16:00, Marcos Weimer <marcosweimer em gmail.com>
escreveu:

> A versão 2.7.7.0 da DLL (que estavamos usando anteriormente) sofre do mesmo
> problema, atualizamos para a 5.1 para ver se solucionava mas não obtivemos
> sucesso.
>
> Verifiquei agora no source da 2.7.7 o método RollbackImplicitTransaction é
> idêntico (transactioncount sem tratamento de exceção)
>
> O problema que o erro é eventual, a maioria dos clientes nunca aconteceu
> nada, funciona 100%, mas tem 2 que acontece com certa frequência, não
> consegui identificar se é em uma lentidão de rede ou algo do tipo.
>
> Se soubesse a causa iria tratar antes, mas não sei.
>
> -=Ma®©oS=-
> Marcos R. Weimer
> Delphi / C# / ASP.NET / PHP / WebServices / Firebird
>
>
> Em 29 de setembro de 2016 10:27, Marcos Weimer <marcosweimer em gmail.com>
> escreveu:
>
> > Ola!
> >
> > Eventualmente nosso aplicativo fecha, do nada, sem motivo aparente, as
> > vezes lança um CLR20R3 null exception, mas isso é beem eventual, tem 2
> ou 3
> > clientes que acontece, de algumas centenas.
> >
> > Então baixei o fonte da dll (FirebirdSql.Data.FirebirdClient, ativei o
> > diagnostic tools no visual studio e boa, deixei rodando, acontece que
> > agora, a primeira vez depois de dias, consegui encontrar um erro, e de
> > posso do fonte o visual studio me levou a linha do problema.
> >
> > Recebo a exceção:
> > An unhandled exception of type 'System.NullReferenceException' occurred
> > in FrebirdSql.Data.FirebirdClient.dll
> >
> > Neste momento, está parado no FbCommand.cs, no método
> > RollbackImplicitTransaction()
> >
> > Tem uma linha não tratada:
> >
> > int transactionCount = Connection.InnerConnection.Dat
> > abase.TransactionCount;
> >
> > Connection = ok
> > InnerConnection = null
> >
> > Usamos eventos e threads, o erro é eventual, não encontrei uma maneira de
> > simular para postar no tracker (além do péssimo ingles).
> >
> > Vendo o código fonte, pensei em apenas mudar para dentro do try, mas não
> > acredito que seja a melhor solução (ou se realmente é a solução, já que
> não
> > consegui compilar a dll para testar se resolve).
> >
> > Segue Trace:
> > Activated    Event    Time    Duration    Thread
> >     <TraceRecord xmlns="http://schemas.microsoft.com/2004/10/
> > E2ETraceEvent/TraceRecord" Severity="Critical"><TraceIdentifier>
> > http://msdn.microsoft.com/TraceCodes/System/ActivityTracing/2004/
> > 07/Reliability/Exception/Unhandled</TraceIdentifier><Description>Exceção
> > não tratada</Description><AppDomain>UltraNFe.vshost.exe<
> > /AppDomain><Exception><ExceptionType>System.NullReferenceException,
> > mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=
> > b77a5c561934e089</ExceptionType><Message>Referência de objeto não
> > definida para uma instância de um objeto.</Message><StackTrace>   em
> > FirebirdSql.Data.FirebirdClient.FbCommand.RollbackImplicitTransaction()
> > na C:\Users\Jiri\Documents\devel\NETProvider\working\Provider\
> > src\FirebirdSql.Data.FirebirdClient\FirebirdClient\FbCommand.cs:linha
> 768
> >    em FirebirdSql.Data.FirebirdClient.FbCommand.Release() na
> > C:\Users\Jiri\Documents\devel\NETProvider\working\Provider\
> > src\FirebirdSql.Data.FirebirdClient\FirebirdClient\FbCommand.cs:linha
> 806
> >    em FirebirdSql.Data.FirebirdClient.FbCommand.Dispose(Boolean
> > disposing) na C:\Users\Jiri\Documents\devel\
> NETProvider\working\Provider\
> > src\FirebirdSql.Data.FirebirdClient\FirebirdClient\FbCommand.cs:linha
> 372
> >    em System.ComponentModel.Component.Finalize()</
> > StackTrace><ExceptionString>System.NullReferenceException: Referência de
> > objeto não definida para uma instância de um objeto.
> >    em FirebirdSql.Data.FirebirdClient.FbCommand.
> RollbackImplicitTransaction()
> > na C:\Users\Jiri\Documents\devel\NETProvider\working\Provider\
> > src\FirebirdSql.Data.FirebirdClient\FirebirdClient\FbCommand.cs:linha
> 768
> >    em FirebirdSql.Data.FirebirdClient.FbCommand.Release() na
> > C:\Users\Jiri\Documents\devel\NETProvider\working\Provider\
> > src\FirebirdSql.Data.FirebirdClient\FirebirdClient\FbCommand.cs:linha
> 806
> >    em FirebirdSql.Data.FirebirdClient.FbCommand.Dispose(Boolean
> > disposing) na C:\Users\Jiri\Documents\devel\
> NETProvider\working\Provider\
> > src\FirebirdSql.Data.FirebirdClient\FirebirdClient\FbCommand.cs:linha
> 372
> >    em System.ComponentModel.Component.Finalize()</
> > ExceptionString></Exception></TraceRecord>
> >
> >
> >
> >
> > -=Ma®©oS=-
> > Marcos R. Weimer
> > Delphi / C# / ASP.NET / PHP / WebServices / Firebird
> >
> >
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://www.firebase.com.br/
> pesquisa_lista.html
>



Mais detalhes sobre a lista de discussão lista