Ir para conteúdo
  • Cadastre-se

dev botao

Erro "Exibe Access Violation" ACBrTEFAPI


Ver Solução Respondido por moacirg,
  • Este tópico foi criado há 163 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Boa tarde!

Estou colocando o TEF para dentro de minha aplicação em Delphi. Eu já usa o SAT. Agora preciso usar o SAT junto com o TEF. Porem quando coloquei os dados do TEF (ACBrTEFAPI) e fiz a configuração no mesmo Form que eu já usava o ACBrSAT. Ate ai tudo bem, funcionou, consegui comunicação com a dll do paygo tudo normal. O erro de "Exibe Access Violation" ocorre sempre após eu realizar qualquer transação no TEF. Seja passando uma venda, seja chamando alguma função do menu administrativo. A primeira que vez que faço a chamada tudo ocorre bem. Mais se eu não encerar minha aplicação, na próxima tentativa de chamar qualquer função do TEF ele me retorna o erro de "Exibe Access Violation". (Vou deixar uma foto).

Fazendo teste criei um novo form colocando apenas o TEF nele. Ai consigo realizar as transações, varias vezes, uma em seguida da outra sem me retornar o erro de "Exibe Access Violation". Porem quando coloco no mesmo form os componentes relacionados ao SAT, ele volta a me apresentar o erro de "Exibe Access Violation" após realizar uma chamada do componente do TEF. 

Alguém saberia me informar o porque do erro ou o que posso fazer para não acontecer? Procurei um exemplo do ACBrSat junto com o ACBrTEF mais não encontrei.

Desde já agradeço a ajuda.

Erro Acess.JPG

  • Moderadores
Postado
15 minutos atrás, Lucas Marcondes disse:

Boa tarde @Daniel Simoes.

Pensei a mesma coisa. Mas já fiz o download da dll e estou usando a 32 bits (x86) que baixei no site do Acbr. Como disse se eu colocar no form apenas o ACBRTef não da problema. O problema aparece quando coloco o ACBrSAT junto.

mas no mesmo form ou dm? tentou separar?

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Postado

Boa tarde @Juliomar Marchetti.

Usei inicialmente no mesmo Form. Coloquei o ACBrSAT no DM e o ACBrTEf no Form e o erro persistiu. Depois crie em form separados, mais os dois ficam abertos no mesmo tempo, chamando um depois chamando o outro, e o erro ainda persistiu.

Alguma sugestão? Tem algum exemplo do ACBrSAT com ACBrTEF? 

Postado

@Daniel Simoes fiz o teste com as duas opções: satDinamico_stdcall e satDinamico_cdecl. Da o mesmo erro. Apenas para o SAT que esta em funcionamento eu uso satDinamico_stdcall. Ja ate peguei outra DLL do SAT no site da Sweda, mais nao resolveu. Mas como é um teste do TEF e não tenho o SAT aqui comigo, eu não chamo nenhum função referente ao SAT. Ele só esta colocados no mesmo contexto, porem só estou fazendo chamadas do TEF.

  • 1 ano depois...
  • 4 semanas depois ...
Postado

Nada de resolver.

Hoje completo 1 mês e 5 dias que não solto nenhuma nova versão do meu sistema porque esse problema persiste sempre que ativo o Tef. Tudo aconteceu depois que migrei para TefApi.

Se trabalhar com meu PDV sem tef, roda que uma beleza. Se ativar o tef, algumas vendas ocorrem normais mas chega uma hora que durante o processo de finalização da venda, sobe o Access Violation no módulo Dbxmss.dll. Parece que tem algo nas units do Acbr Tef que destrói a conexão do sistema com a biblioteca dbxmss.dll. O Sistema simplesmente perde a conexões com Banco de dados.

 

ba2b82bd-8ed6-466c-8eed-6951ca048788.jpeg

  • Moderadores
Postado
 

Nada de resolver.

Hoje completo 1 mês e 5 dias que não solto nenhuma nova versão do meu sistema porque esse problema persiste sempre que ativo o Tef. Tudo aconteceu depois que migrei para TefApi.

Se trabalhar com meu PDV sem tef, roda que uma beleza. Se ativar o tef, algumas vendas ocorrem normais mas chega uma hora que durante o processo de finalização da venda, sobe o Access Violation no módulo Dbxmss.dll. Parece que tem algo nas units do Acbr Tef que destrói a conexão do sistema com a biblioteca dbxmss.dll. O Sistema simplesmente perde a conexões com Banco de dados.

 

ba2b82bd-8ed6-466c-8eed-6951ca048788.jpeg

Não é o componente, mas algum comportamento que a dll do dbx e a dll do tef não consegue se entender.

a questão do coinitilization não funcionou??

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

  • Membros Pro
Postado

Bom dia,

Por que você não utiliza o MadExcept ou EurekaLog para saber onde exatamente está levantando a exceção?

Ajuda bastante, pelo menos você não fica no escuro com uma mensagem de AV genérica.

  • Curtir 1
Postado

Nossa equipe possui Licença do EurekaLog a mais de 5 anos, ele aponta para a dbxmss.dll, por isso não consigo saber onde esta o erro.
Tentei utilizar arquivo de depuração remota e .MAP mas não adianta, o erro vem da DBX.

Tentei usar sim  o CoInitialize(nil) e CoUninitialize;
Estava inicializando sempre antes de conectar ao banco e utilizava o CoUninitialize; assim que fechava a conexão, mas agora fiz diferente, coloquei no Oncreate  do principal (CoInitialize(nil); e apenas no ONclose   CoUninitialize.
Dessa forma ele ficará inicializado o tempo todo, apenas uma vez.
Estou tentando, assim que obter retorno, volto a postar o resultado.
Obrigado a todos envolvidos pela ajuda.

Segue o Log do Eureka :

Access violation at address 072F1BB0 in module 'dbxmss.dll'. Read of address 076CB840

Code: C0000005 (EXCEPTION_ACCESS_VIOLATION)
Address: (00011BB0){dbxmss.dll  } [072F1BB0] dbxmss (possible DBXReader_Next+2856) + $B28.

; Base Address: $72F1000, Allocation Base: $72E0000, Region Size: 69632
; Allocation Protect: PAGE_EXECUTE_WRITECOPY, Protect: PAGE_EXECUTE_READ
; State: MEM_COMMIT, Type: MEM_IMAGE

;
; dbxmss. (possible DBXReader_Next+2829) (Line=0 - Offset=2829)
; -------------------------------------------------------------
072F1B95  59        POP  ECX
072F1B96  5D        POP  EBP
072F1B97  C20400    RET  4
072F1B9A  90        NOP
072F1B9B  90        NOP
072F1B9C  55        PUSH EBP
072F1B9D  8BEC      MOV  EBP, ESP
072F1B9F  53        PUSH EBX
072F1BA0  56        PUSH ESI
072F1BA1  33F6      XOR  ESI, ESI
072F1BA3  8B5D08    MOV  EBX, [EBP+8]
072F1BA6  837B0800  CMP  DWORD PTR [EBX+8], 0
072F1BAA  7409      JZ   +9                   ; ($072F1BB5) dbxmss. (possible DBXReader_Next+2861) (Line=0)
072F1BAC  8B4308    MOV  EAX, [EBX+8]
072F1BAF  50        PUSH EAX
;
; dbxmss. (possible DBXReader_Next+2856) (Line=0 - Offset=2856)
; -------------------------------------------------------------
072F1BB0  8B10      MOV  EDX, [EAX]           ; <-- EXCEPTION


 

  • Solution
Postado

Boa tarde a todos, hoje completei 1 mês e 11 dias que estava com problemas de Access Violation na biblioteca dbxmss.dll no delphi 2010 ao efetuar transações TEF, utilizando componente TEFAPI.

O pior era que não acontecia todas as vezes, ou determinadas sequencias que faria gerar o AV, era de forma aleatória.

- Formatei o computador

- Reinstalei delphi, mas agora com o Update 4/5 ( antes não tinha os Updates )

- Reinstalei todos componentes ACBr

- Removi o componente SQLCONNECTION do meu Datamodulo e arrastei um novo da paleta. Isso pode parecer que não tenha efeito, mas tem, pois ele reconfigura a conexão vindo de dbxconnections.ini e dbxdrivers.ini. (O AV em questão estava vindo sempre que abria ou fechava a conexão com banco de dados, isso consegui rastrear devido ao LOG_TXT que gero na aplicação, parecido com dos componentes ACBr).

- Apaguei todas DCUs, recompilei o projeto e pronto Resolvido.

- Removi ActiveX de Uses, não precisou do Initialize e CoUninitialize.

Obrigado a todos pela ajuda.

Considero o tópico resolvido ( de minha parte).

 

  • Curtir 1
  • Este tópico foi criado há 163 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.