hb_xgrab can't allocate memory

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

hb_xgrab can't allocate memory

Mensagem por JoséQuintas »

Application Internal Error - Z:\JPA\lubrivan\JPA3.EXE
Unrecoverable error 9006: hb_xgrab can't allocate memory
Called from SUBSTR(0) in source\winapi\hprinter.prg
Called from HBNFEDANFE:FORMATAMEMO(103) in source\ze_sefazDadfe.prg
Called from HBNFEDANFE:CALCULALAYOUT(983) in source\ze_sefazDaNfe.prg
Called from HBNFEDANFE:GERAPDF(310) in source\ze_sefazDaNfe.prg
Called from HBNFEDANFE:TOPDF(206) in source\ze_sefazDaNfe.prg
Called from HBNFEDAGERAL:TOPDF(180) in source\ze_sefazDadfe.prg
Called from XMLPDFCLASS:GERAPDF(47) in ze_spedxmllist.prg
Called from GERADADOS(119) in pdfezipxml.prg
Called from PDFEZIPXML(52) in pdfezipxml.prg
Called from DO(0) in ../../../memoedit.prg
Called from DOPRG(156) in jpa.prg
Called from (b)RUNMODULE(120) in jpa.prg
O estranho não é o erro.
Está mostrando como se SUBSTR() fosse função da hwgui.
Também estranho mostrar nome de prg com PATH, não lembro disso acontecer antes.
E mais estranho ainda mostrar memoedit.prg no meio de tudo.
Convém lembrar que esse tipo de erro não faz parte da errorsys.prg.
Mistérios....
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
HASA
Colaborador
Colaborador
Mensagens: 1088
Registrado em: 01 Set 2003 19:50
Localização: São Paulo
Contato:

hb_xgrab can't allocate memory

Mensagem por HASA »

Boa tarde, tenta um EXTERNAL SUBSTR no inicio do prg principal.
HASA
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

hb_xgrab can't allocate memory

Mensagem por JoséQuintas »

Talvez a bagunça de memória foi tão feia que bagunçou as coisas.

Não sei se esse cliente fez a última atualização necessária.
Como é erro interno, que não entrou na errorsys, não vieram as informações sobre a versão do aplicativo.
Pode fazer parte daquele "erro inexplicável" de outro tópico.

Por enquanto apenas removi HWGUI do aplicativo, são só testes mesmo....
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

hb_xgrab can't allocate memory

Mensagem por alxsts »

[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

hb_xgrab can't allocate memory

Mensagem por JoséQuintas »

O erro foi na geração do PDF do Danfe.
E na formatação do texto de informações adicionais.
Isso não costuma ter tanto texto assim.

Seguindo o erro:
Called from (b)RUNMODULE(120) in jpa.prg
Called from DOPRG(156) in jpa.prg
Called from DO(0) in ../../../memoedit.prg
Acima o menu chama a rotina, com certeza memoedit não tem nada a ver
Called from PDFEZIPXML(52) in pdfezipxml.prg
Called from GERADADOS(119) in pdfezipxml.prg
Called from XMLPDFCLASS:GERAPDF(47) in ze_spedxmllist.prg
Acima ok, a rotina que foi chamada, que cria ZIP de XML + Danfe
Called from HBNFEDAGERAL:TOPDF(180) in source\ze_sefazDadfe.prg
Called from HBNFEDANFE:TOPDF(206) in source\ze_sefazDaNfe.prg
Called from HBNFEDANFE:GERAPDF(310) in source\ze_sefazDaNfe.prg
Called from HBNFEDANFE:CALCULALAYOUT(983) in source\ze_sefazDaNfe.prg
Called from HBNFEDANFE:FORMATAMEMO(103) in source\ze_sefazDadfe.prg
Called from SUBSTR(0) in source\winapi\hprinter.prg
Acima, até ia bem na criação do PDF, até que chegou na rotina FormataMemo(), que pega o texto de informações adicionais (ou outro) pra calcular quantidade de linhas.
De repente, mostra que deu erro em Substr() e fonte hprinter da hwgui.
Não existe essa função lá.
E num XML não tem tanto texto que cause sobrecarga de memória.

Código: Selecionar todos

METHOD FormataMemo( cMemo, nLarguraPDF ) CLASS hbNFeDaGeral

   LOCAL cNovoTexto := "", cTexto, nPos, nCont

   FOR nCont = 1 TO MLCount( cMemo, 10000 )
      cTexto  := MemoLine( cMemo, 10000, nCont )
      DO WHILE .T.
         nPos := HPDF_Page_MeasureText( ::oPDFPage, cTexto, nLarguraPDF, .T. )
         IF nPos == 0
            nPos := HPDF_Page_MeasureText( ::oPDFPage, cTexto, nLarguraPDF, .F. )
            nPos := Max( nPos, 2 )
         ENDIF
         cNovoTexto += Substr( cTexto, 1, nPos ) + Chr(13) + Chr(10)
         cTexto     := AllTrim( Substr( cTexto, nPos + 1 ) )
         IF Len( cTexto ) == 0
            EXIT
         ENDIF
      ENDDO
   NEXT
   IF Right( cNovoTexto, 2 ) == Chr(13) + Chr(10)
      cNovoTexto := Substr( cNovoTexto, 1, Len( cNovoTexto ) - 2 )
   ENDIF

   RETURN cNovoTexto
A rotina pega UMA LINHA por vez, pra ver se cabe.
Ou separa a parte que cabe, ou usa o tamanho máximo que couber.
Conforme testa, já remove a parte que vai ficar, e vai acumulando na string geral.
De um jeito ou de outro a string vai ficando menor.
E o resultado geral vai ser uma string um pouco maior que a original.
Digamos que uma string de 4k pode ficar com 4k1

Não faz sentido estourar memória nessa rotina, e muito menos entrar hwgui no meio.

Também não tem a ver com estouro de PDF, porque nesse ponto é apenas cálculo antes de começar o PDF.

Sei lá... deixar pra lá, e aguardar se vai acontecer de novo.
E tentar entrar em contato assim que aparecer email de erro.
Até agora eles nem ligaram pra falar do erro, deve ter funcionado depois, ou nem perceberam que deu erro.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

hb_xgrab can't allocate memory

Mensagem por JoséQuintas »

Melhor ainda....
Vém backup pra mim...
Gerar do mês inteiro aqui pra ver o que dá...
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

hb_xgrab can't allocate memory

Mensagem por JoséQuintas »

Funcionou normal aqui, TODAS as notas do mês.
Geralmente no cliente, ele escolhe o CNPJ de um destinatário, quando o destinatário pede.
Mas eventualmente pode ser o próprio pra enviar todas as notas pro contador.
E limito pra no máximo um único mês.
Se fosse problema em algum XML, daria erro aqui também.

Só resta aguardar....
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder