| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
mtsys Novato

Registrado: Terça-Feira, 16 de Dezembro de 2014 Mensagens: 4
|
Enviada: Ter Dez 16, 2014 12:39 pm Assunto: Access violation at address 410046E0 in module 'borlndmm.dll |
|
|
Pessoal,
estou com o erro nos aplicativos na empresa aonde eu trabalho, que é:
Access violation at address 410046E0 in module 'borlndmm.dll'. Write of address 00000004
Começou a ocorrer de repente e em locais diferentes e com situações diferentes. E como sempre não conseguimos simular o erro para ajustar o mesmo.
Utilizamos o Delphi 5, com BDE e quase todos aplicativos / DLL usam no uses do projeto a classe ShareMem.
O que posso fazer para tentar achar a solução? |
|
| Voltar ao Topo |
|
 |
claudio.ferreira Profissional


Registrado: Quarta-Feira, 18 de Setembro de 2013 Mensagens: 667
|
|
| Voltar ao Topo |
|
 |
marcieldeg Colaborador


Registrado: Terça-Feira, 5 de Abril de 2011 Mensagens: 1054 Localização: Vitória - ES
|
Enviada: Ter Dez 16, 2014 9:51 pm Assunto: |
|
|
Erros em locais diferentes costumam ser causados por threads não corretamente finalizadas, ou que acessam objetos já excluídos da memória.
Outro ponto importante é a versão do Delphi que está utilizando. Esse pode ser um erro da IDE já corrigido em versões recentes.
Tente seguir o tutorial desse link, pode ser útil:
http://www.uebbi.com/delphi-localizando-erros-de-access-violation/
Vou transcrever para o caso da página sair do ar:
Seu aplicativo está gerando uma exceção não capturada e está exibindo uma mensagem de Access Violation e você quer identificar o local (arquivo, linha e código) onde o erro está ocorrendo? Eis o caminho:
Execute a aplicação [Run], entre no modo de depuração [Pause], vá em [Search] e em seguida em [Goto Address]
Entre com o endereço mostrado na mensagem [Ex: $00407E50 – note que você deve adicionar o sinal de $] e faça a busca – se encontrado, o endereço será selecionado automaticamente na aba CPU.
Adicione um Breakpoint no endereço recém encontrado [CTRL + B]
Execute a aplicação novamente.
Quando o Breakpoint for encontrado a aplicação será pausada, nesse momento você então poderá verificar o Caller [CTRL + L] – onde poderá visualizar a origem da chamada [arquivo, linha e código executado]. |
|
| Voltar ao Topo |
|
 |
mtsys Novato

Registrado: Terça-Feira, 16 de Dezembro de 2014 Mensagens: 4
|
Enviada: Qua Dez 17, 2014 8:29 am Assunto: |
|
|
Valeu pelas dicas. Testei e achei o endereço, o pior que o meu caso, não consigo ver o código fonte com a origem do problema. Mas está certo que é uma thread pois fica indo neste endereço direto.
O código ficou:
| Código: | | 410046E0 895A04 mov [edx+$04],ebx |
Conforme o erro:
| Código: | | Access violation at address 410046E0 in module 'borlndmm.dll'. Write of address 00000004 |
estou achando que o pau foi dentro da borlndmm.dll, porém procurei o endereço 00000004, e ele está ???.
Será que o erro é mesmo dentro da borlndmm.dll ou dentro da minha aplicação?[/code] |
|
| Voltar ao Topo |
|
 |
albertschimidt Novato

Registrado: Terça-Feira, 9 de Outubro de 2018 Mensagens: 1
|
Enviada: Ter Out 09, 2018 11:26 am Assunto: |
|
|
| Eu sei que o post é velho e pode ser que o autor já até tenha resolvido seu problema, mas aqui vai a solução de um caso parecido que ocorreu comigo recentemente. O erro era o mesmo, mudando apenas o address da mensagem. Se não me falha a memória, eu li no site do Delphi, no quesito implementação de DLL, que quando você trabalha com a unit ShareMem, ele PRECISA ser a PRIMEIRA unit declarada no Uses, para não ocorrer esses erros de memória. Apenas precisei mover a declaração da unit ShareMem para a primeira posição da Uses e o problema foi solucionado. |
|
| Voltar ao Topo |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
|
| Voltar ao Topo |
|
 |
|