Um conhecimento só é válido quando compartilhado.

terça-feira, 24 de março de 2009

MidasLib vs ReportMemoryLeaksOnShutdown

Nas minhas aplicações tenho o "ReportMemoryLeaksOnShutdown := DebugHook <> 0", habilitado sempre. Enquanto eu estava no D2007 o vazamento de memória estava zerado, tratei todos. Ao mudar para o D2009 começou a aparecer um vazamento de memória assim:

Como não me relata quais objetos não foram liberados da memória, eu não pude resolver este problema, até ontem. Ontem resolvi cercar alguns recursos em uma das telas de um sistema meu e observei que ao cercar o método que configura as propriedades dos TFields como:
  • ConstraintErrorMessage;
  • DefaultExpression;
  • Alignment;
  • DisplayFormat;
  • etc..
o erro acima não ocorria, então pensei. Já não bastava o erro "stack overflow", ainda mais esse ?
Meu proximo passo foi cercar propriedade por propriedade pra descobrir qual ou quais estavão gerando o vazamento de memória, até que descobri que era a propriedade "DefaultExpression". Bom agora além de ter que mudar o método de validação de minhas aplicações iria eu ter que mudar o método de alimentar os valores defaults dos TFields ? Não ! Parti então para fazer um exemplo e mandar para o Andreano na esperança dele reportar e o problema ser resolvido talvez no Update3, mas ao concluir o exemplo este não me mostrava o erro citado acima, então o que poderia ser ? Passei limpando uma de minhas aplicações vendo se tinha alguma Unit que poderia estar ocasionando o erro, mas não consegui achar nada, até que ao abrir o fonte do projeto em um de meus sistemas, no menu Project->View Source, descobri que tinha 3 units inseridas por mim mesmo ao projeto que são elas:
Como não poderia deixar, comentei as duas ultimas pensando que se fosse essas seria uma das duas a MidasLib não poderia ser..., o erro continuou aparecendo, então para desencargo de consciência comentei a MidasLib também e para minha surpresa era ela que estava ocasionando os vazamentos de memória.
Fica aqui mais uma situação ocorrida comigo para que outros não passem por isso, e mais uma vez vamos esperar que no Update3 isso seja resolvido.

T+

0 comentários :

Postar um comentário

SAC Automação Delphi e Lazarus

SAC Automação Delphi e Lazarus
Assine nosso SAC Automação Delphi e Lazarus para ter suporte técnico especializado em desenvolvimento

Quem sou eu

Minha foto

Proprietário/Administrador de Empresa em TI (Tecsis Informática)
  • Autor dos projetos OpenSource ORMBr, e DBCBr
  • Autor dos componentes ACBrInstall, ACBrSped, ACBrPaf, ACBrInStore, ACBrDownload.

Total de visualizações

Postagem em destaque

ORMBr - Mapeamento objeto-relacional

Mapeamento objeto-relacional ( ou ORM, do inglês: Object-relational mapping ) é uma técnica de desenvolvimento utilizada para reduzir...

Todo os direitos reservados.. Tecnologia do Blogger.

Seguidores

Google+ Seguindores