Ir para conteúdo
  • Cadastre-se

dev botao

Acbretq Passou A Gerar Erros Esporádicos Depois De Atualização


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

Recommended Posts

Bom dia. Vou tentar explicar a situação que passamos aqui na empresa onde trabalho pra ver se é possível alguém ajudar.
 
A cerca de 6 meses, utilizamos o componente ACBrETQ para impressão de código de barras em uma impressora Argox OS-214. E foi implementado em nosso cliente normalmente, nunca houve necessidade sequer de manutenção. Porém, como ele utiliza essa impressão apenas de tempos em tempos (cerca de 15 dias), ele reclamou que estava imprimindo apenas de vez em quando, em outras aparecia uma mensagem de erro. Ao realizarmos os testes aqui na empresa, constatamos que está retornando uma mensagem normalmente associada a memória (stackoverflow) e esse erro acontece esporadicamente, sem uma lógica. Para confirmar os testes, pegamos uma versão de nosso projeto gerada no final de março de 2013 e essa funcionou corretamente. Porém, depois que atualizamos os componentes ACBr através do Tortoise (algo que não fazíamos até então) no começo de abril, todas as versões geradas desse período até então retornam o mesmo erro.
 
Até o momento que escrevo essa mensagem, estamos utilizando a versão 5351 pelo Tortoise. Nosso sistema é feito em Delphi 6.
 
infelizmente, não tenho como dar mais detalhes pois é um problema que está fugindo de nosso compreendimento. Não sei se o componente sofreu alterações no período que possam ser revistas pelos desenvolvedores. O código fonte de nosso projeto é exatamente o mesmo de quando fizemos pela primeira vez e, dados os resultados dos testes (por ele funcionar com projetos até o fim de março e não funcionar com os projetos feitos a partir do começo de abril), parece ser mesmo do ACBrETQ.
 
Fizemos testes em Windows XP e 7. Não sei se o problema realmente é no componente mas chegamos a essa conclusão devido a nossos testes utilizando o mesmo código fonte somente com versões diferentes de atualização do componente.
 
Caso alguém precise de mais informações, vou postando. Se puderem ajudar, agradeço muito.
 
Obrigado
 
PS: criei esse novo tópico conforme pedido do moderador Daniel Simões. Se quiserem apagar as mensagens do outro tópico, fiquem a vontade.

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Vocês conseguem identificar qual versão do ACBr que funcionava antes de ser atualizado?

 

Nysp, você diz que está utilizando o Delphi 6 e assim apresenta erros de memória. Você utiliza no seu projeto o Fastmm?

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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.
Link para o comentário
Compartilhar em outros sites

Vocês conseguem identificar qual versão do ACBr que funcionava antes de ser atualizado?

 

Nysp, você diz que está utilizando o Delphi 6 e assim apresenta erros de memória. Você utiliza no seu projeto o Fastmm?

 

Obrigado por responder EMBarbosa.

 

Começando pelo fim, não, infelizmente não utilizo o Fastmm.

 

Sobre a versão do ACBr eu não sei identificar qual era a versão anterior a nossa atualização pelo seguinte: o ACBr foi instalado por um funcionário aqui da empresa que não trabalha mais aqui sem controle de versionamento. Como ele foi instalado e sempre foi utilizado sem problemas, nunca ninguém se preocupou em utilizar o Tortoise pra atualizar e ter as versões mais atuais dos componentes até o começo de abril desse ano. Portanto, nosso projeto era gerado com uma versão antiga do ACBrETQ e que funcionava perfeitamente. Porém, desde o começo de abril de 2013, passamos a atualizar o diretório com os componentes para termos uma nova versão de outro componente, o ACBrValidador e, por consequência, o ACBrETQ começou a apresentar esse problema esporádico - partindo do princípio de que seja realmente ele o problema como mencionei no post acima.

 

Eu ainda até tenho um backup do antigo diretório anterior ao momento em que começamos a atualizá-lo com o Tortoise, mas não consegui identificar a qual versão do ACBr ele era. Se você souber de alguma forma, posso te informar, mas garanto que era bem antiga, provavelmente do começo do ano passado (2012). Não sei se há alguma identificação dentro do diretório de qual versão fazia parte. No log do Tortoise consta que a primeira versão que baixou para nós após o uso do mesmo foi o versionamento 5260. Porém, não sei especificar se foi realmente a partir dessa versão que começou o problema pois, como te disse, utilizamos uma versão bem defasada.

 

Acontece que, após atualizarmos os componentes, qualquer projeto gerado a partir da atualização apresenta esse erro. E os gerados anterior a atualização não, sendo o código fonte exatamente igual de ambas. Desculpa pela falta de informações e até de exatidão para esclarecer se o erro realmente vem do componente, mas tentei explicar detalhadamente o que aconteceu pra ver se é possível identificá-lo.

 

Se eu puder ajudar com mais informações, é só me pedir. Obrigado novamente pela ajuda.

Link para o comentário
Compartilhar em outros sites

  • Consultores

  Podemos tentar verificar a versão por meio dos arquivos "change.log". Em cada pasta de arquivos fonte dos pacotes existe um arquivo que armazena as alterações mais significativas. Por exemplo, na pasta "Trunk\Fontes\ACBrSerial\" tem o arquivo "ACBrSerial-change-log.txt".

Compare a versão antiga com a que você tem hoje. Tente qual a data da última atualização neste arquivo antes de atualizarem pelo tortoise. Faça isso com outros pacotes (ACBrComum, Synalist) que podem indicar alterações mais precisas.

 

  Talvez depois do seu retorno a gente possa identificar a maior parte das versões que podem dar problemas.

 

Enquanto isso, inclua o Fastmm no seu projeto e coloque ele em teste para verificar se o erro continua acontecendo. Talvez seu problema possa ser resolvido só com isso.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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.
Link para o comentário
Compartilhar em outros sites

EMBarbosa, não sei se isso irá ajudar a esclarecer algo, mas segue as comparações dos logs que você indicou. Estou pegando o que consta como última atualização de cada um deles:
 
================================================================
 
ACBrComum (ACBrComum-change-log.txt)
 
versão antiga, anterior ao Tortoise:
 
Data: 27/07/2011
-- ACBrUtil --
[-] Corrigido o método AjustaLinhas para considerar as tags de formatação
    estava colocando a quebra de linha no meio delas e causando erros
    (por: Régys Silveira)
 
versão posterior ao Tortoise:
 
Data: 05/04/2013
-- ACBrUtil --
[+] Adicionado os metodos para conversão de Inteiros em Strings binárias no
    formato Little Endian   (por: DSA)
    function IntToLEStr(AInteger: Integer; BytesStr: Integer = 2): AnsiString;
    function LEStrToInt(ALEStr: AnsiString): Integer;
 
================================================================
 
ACBrSerial (ACBrSerial-change-log.txt)
 
versão antiga, anterior ao Tortoise:
 
Versão 0.9.6  11/09/2010
-- ACBrECF --
[-] Corrigido rotina VendaItem, para Daruma FS345, quando quantidade do item 
    tem 3 casas decimais (Isaque Pinheiro).
 
versão posterior ao Tortoise:
 
Data: 09/05/2013
-- ACBrBal --
[-] Alterado tempo de sleep após envio de comando de LePeso para corrigir AV.
   
 
================================================================

 

No Synalist não encontrei log.
 
O último registro que encontrei nos logs relacionado a ACBrETQ no log do ACBrSerial foi esse aqui:
 
Data:  13/03/2011
-- ACBrETQ --
[+] - Adicionado suporte a novo protocolo EPL2 (que é igual ao PPLB)
      Por: José Luís Schiavo  e DSA
[*] - Modificada a assinatura do método: CarregarImagem, para:
      CarregarImagem(AStream : TStream; NomeImagem: String;
            Flipped : Boolean = True; Tipo: String = 'BMP' ); overload;
      Pois alguns modelos de Impressoras suportam imagens diferentes de BMP e
      não suportadas pelo Delphi. A mudança também permitira o uso desse método
      em aplicações console
[+] - Adicionado o método: CarregarImagem(ArquivoImagem, NomeImagem:
                                          String; Flipped : Boolean = True  )
      (Uma sobrecarga do método já existente)
[+] - Adicionada a propriedade "DPI", que permite informar ao ACBrETQ,
      quantas DPI o equipamento comandado suporta. Dessa maneira é possível
      utilizar unidades de medida em Milimitros ou Polegadas mesmo em modelos
      EPL2 e PPLB (que originalmente só suportam medidas em Dots)
[*] - Aplicação Demo - ETQTeste, modificada para melhor exemplifiar as novas
      funcionalidades
 
Espero que tenha pego as informações corretas.
 
Obrigado pela ajuda.
Editado por Nysp
Link para o comentário
Compartilhar em outros sites

  • Consultores

Rapaz, seus códigos estão muito defasados, eles são de antes de ter adicionado o ACBrAAC. E isso tem tempo...

Veja o que vou lhe sugerir para tentarmos encontrar qual o problema.

 

1) Use o Tortoise para mostrar o log  (SVN Show Log)

2) Navegue até a revisão 2500

3) clique com o botão direito e escolha Revert to this revision

 

Isso vai fazer com que o código volte para uma revisão próxima a que você estava usando. Daí você pode testar.

Se der certo, você pode atualizar algumas versões usando o "Update to revision...". E vai fazendo isso até conseguir encontrar qual alteração que atrapalhou o funcionamento.

 

Pergunta: Você já instalou o Fastmm no seu projeto? Qual o resultado?

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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.
Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...

EMBarbosa, desculpa a demora na resposta.

 

Você tem algum tutorial de como usar o FastMM com Delphi 6? Eu inclusive tirei a função do meu projeto e a deixei em um projeto a parte somente para testar com o FastMM mas, mesmo usando vários tutoriais (nenhum deles específico para Delphi 6, algo que não encontro), não consegui ter o log de possível erro.

 

Sobre voltar o Tortoise para revisão específica, eu não posso fazer isso pois utilizo outro componente que precisa estar atualizado. Há uma maneira de fazer isso comente com o ACBrETQ?

 

Obrigado

Link para o comentário
Compartilhar em outros sites

  • Consultores

Adicionar o FastMM como gerenciador de memória no projeto é simples:

  • Faz o download FastMM library
  • Inclua como a primeira unit do seu projeto (como abaixo):
program SeuProjeto;
uses
  FastMM4,
  SysUtils,
  Forms,
  ...
  • Faça um Build do projeto;

Pronto. Já está usando.

 

Agora, para usar ele para procurar leaks de memória e erros já é outra coisa. Vou colocar links para isso mais abaixo.

 

No entanto, eu preciso saber, depois de adicionar ele no projeto, como se comporta o componente? Continua gerando erro? Muda a mensagem? Funciona?

 

Links para uso do FastMM:

http://web.archive.org/web/20091007162116/http://blog.eurekalog.com/?p=198

http://stackoverflow.com/questions/1130454/how-to-get-a-stack-trace-from-fastmm

 

Depois a série de artigos começando aqui:

http://wiert.me/2009/07/29/delphi-fastmm-using-fastmm4-for-debugging-your-memory-allocations-part-1-introduction/

 

Se preferir pode baixar o video do François Gaillard feito na CodeRage 2 aqui:

http://edn.embarcadero.com/article/37498

 

Nota: Esses links são artigos em inglês. Se preferir ler em Português vai ter que buscar no google. Não tenho nenhum link desses aqui.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

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.
Link para o comentário
Compartilhar em outros sites

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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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.