Jump to content

logo_acbr_paygo.png

Chegou o TEF ACBr PayGo
Seja um revendedor e ofereça uma solução completa para seu cliente.


botao_saibamais.png

beneficios.png

Curso Dominando o ACBrMonitor
Novo Módulo Soluções de Varejo
Assine o SAC ACBr em qualquer plano e tenha acesso

Saiba Mais

Balança SM100 performance surpreendente

Tecnologia Japonesa   Teclado e Visor resistentes a água
Consumo inteligente de etiquetas   Baixo custo de manutenção
Comunicação Ethernet e WIFI independentes

Saiba Mais

Impressora de Etiquetas ELGIN - L42 PRO

Protocolos PPLA, PPLB, ZPL, EPL (automático)
Porta USB padrão Opcionais: Ethernet, Serial, Paralela
Sensor de Etiquetas Móvel Garantia de 18 meses

Saiba mais

Alisson Souza Pereira

Consumo de memória só aumenta

  • Este tópico foi criado há 413 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui

Recommended Posts

Consumo de memória só aumenta utilizando Open SSL(Certificado Digital.pfx) 

Fonte: ACBrDFeOpenSSL.pas
Procedure: TDFeOpenSSL.CarregarCertificado
Comando: DadosPFX := ReadStrFromStream(FS, FS.Size);

O comando ReadStrFromStream é responsável por aumenta o consumo de memória toda vez que um arquivo XML é assinado e esse consumo
mesmo após destruir o componente ACBreSocial não é subtraído. 

Edited by Alisson Souza Pereira

Share this post


Link to post
Share on other sites
2 horas atrás, Alisson Souza Pereira disse:

Mudei para a assinatura com o certificado instalado na máquina, com isso contorno a situação, porém o problema ainda existe. 
Não sei exatamente como corrigir. 

Como você detectou que o vazamento está aí? Está utilizando o FastMM? Poderia apresentar um log? Precisamos de uma aplicação que demonstre o problema. Pode montá-la?

Inspecionando o código por cima não vi nada que possa ocasionar um vazamento de memória como você afirma haver. Veja bem:

Em 21/05/2019 at 18:48, Alisson Souza Pereira disse:

O comando ReadStrFromStream é responsável por aumenta o consumo de memória toda vez que um arquivo XML é assinado e esse consumo
mesmo após destruir o componente ACBreSocial não é subtraído.  

Se você ler o código ao redor do método ReadStrFromStream, notará que esse método não cria nenhum objeto, os objetos passados a ele por parâmetros não tem incrementação de RefCount,  DadosPFX é AnsiString, o método TDFeSSL.SetDadosPFX não parece causar nenhum vazamento.

 


[]'s

Consultor SAC ACBr

Elton
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.

Share this post


Link to post
Share on other sites

Boa tarde, @EMBarbosa minha aplicação depois de algum tempo rodando acabava travando devido o consumo elevado de memória,
Cada vez que o XML era assinado aumentava de 0,1 a 1 mega, se a linha for comentada a memoria para de sobrecarregar(comentar a linha não é a solução é só o teste que fiz)

Sobre o FastMM sempre utilizo em meu desenvolvimento, segue as informações que tenho. 

Quando é executado o comando ReadStrFromStream ocorre memory Leak
image.thumb.png.5366e9c3eeda08196cbe8ebb3891b62c.png

An unexpected memory leak has occurred. The unexpected small block leaks are:
13 - 20 bytes: TLeitor x 1, Unknown x 1
69 - 76 bytes: TStringList x 1
117 - 124 bytes: Unknown x 1

 

Se a linha for comentada não há vazamento de memória, ocorre o exception e cancela a assinatura do XML. 
image.png.bbc1203019603ec8e073853a0595651b.png
 


Não acredito que o problema de memória seja por causa de configuração, mas segue a configuração que estou utilizando. 
SSLLib       := libOpenSSL;
SSLHttpLib   := httpWinHttp;

 

Share this post


Link to post
Share on other sites
40 minutos atrás, Alisson Souza Pereira disse:

minha aplicação depois de algum tempo rodando acabava travando devido o consumo elevado de memória,
Cada vez que o XML era assinado aumentava de 0,1 a 1 mega, se a linha for comentada a memoria para de sobrecarregar(comentar a linha não é a solução é só o teste que fiz)

Puxa isso é frustrante. Um vazamento de 0,1 a 1 mega é muita coisa pra vazamento de memória numa função usada tantas vezes. Mas dá pra gente resolver. Vamos lá...

38 minutos atrás, Alisson Souza Pereira disse:

Sobre o FastMM sempre utilizo em meu desenvolvimento, segue as informações que tenho

Que ótimo! Isso ajuda muito para que juntos, analisemos o problema! Já li aqui e identifiquei um possível problema.

Por favor veja essa parte que você escreveu:

42 minutos atrás, Alisson Souza Pereira disse:

Se a linha for comentada não há vazamento de memória, ocorre o exception e cancela a assinatura do XML. 
image.png.bbc1203019603ec8e073853a0595651b.png

Poderia alterar a linha para a seguinte?

DadosPFX := 'Texto apenas para ter algum valor.';

Daí repita o teste para ver se acontece o mesmo vazamento de memória.

A propósito, qual versão do seu Delphi?


[]'s

Consultor SAC ACBr

Elton
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.

Share this post


Link to post
Share on other sites

Atualmente estou utilizando 10.3 Rio, porém noto que este vazamento ocorre desde quando implantei o eSocial em 2018 e naquela época utilizava 10. 1 Berlin e posterior mente 10.2 Tokyo.
 

Ao invés de comentar o código, passar qualquer valor para o DadosPFX conforme solicitado. 

DadosPFX := 'Texto apenas para ter algum valor.';

Não há memory leak, e só dá erro na segunda verificação LerPFXInfo 

    if EstaVazio(DadosPFX) then
      raise EACBrDFeException.Create('Erro ao Carregar Certificado');

    if not LerPFXInfo(DadosPFX) then
      raise EACBrDFeException.Create('Erro ao ler informações do Certificado.'+sLineBreak+
                                     'Provavelmente a senha está errada' );

 

Share this post


Link to post
Share on other sites
Em 24/05/2019 at 16:37, Alisson Souza Pereira disse:

Não há memory leak, e dá erro na segunda verificação LerPFXInfo  

hmmm então o teste que eu passei não foi suficiente. Poderia manter a alteração que eu pedi e comentar essa verificação?

A intenção é que não seja levantado nenhuma exception para que possamos avaliar se há ou não o vazamento.


[]'s

Consultor SAC ACBr

Elton
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.

Share this post


Link to post
Share on other sites
  • Este tópico foi criado há 413 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...