Página 1 de 1

Desafio para usuários hwgui

Enviado: 19 Mar 2025 16:36
por JoséQuintas
Atenção ao desafio.

NÃO É PRA FAZER FUNCIONAR.
É pra tentar eliminar o máximo de fonte, e continuar com erro.
test.prg
(28.07 KiB) Baixado 157 vezes
Reduzi bastante e o tamanho original.

Só pra curiosidade:

Código: Selecionar todos

FUNCTION Nothing()

   RETURN Nil
Se eliminar isso acima, que não serve pra nada, o fonte funciona.

Entenderam ?
É um fonte que inexplicavelmente dá erro.
Se compilar com -gc3 funciona.
Se eliminar essa função vazia também funciona.
Por enquanto reduzi de 56KB pra 28KB

O único jeito de tentar descobrir o motivo do erro é tentar reduzir o fonte e ele continuar com erro.
Ao fazer isso, o que sobrar no fonte seria o motivo real do erro.
A dificuldade é justamente porque qualquer coisa apagada pode resolver o erro, o que não explica o erro.
Tamanho de fonte não é, porque já reduziu pra metade.
Remover a função vazia.. se o problema não é tamanho, não explica o erro.

Pra mim tá parecendo que o harbour se perde nos retornos.
Pode ser falha de GUI ou não.
Pode ser que a lista de funções se altera, e tá pegando função errada.

Pode parecer interessante pra quem usa HWGUI,
Mas se for problema do harbour, interessa pra todos.

É compilar, entrar e sair, se der erro o problema ainda está lá.
Eventualmente tudo se fecha, mas o harbour registra hb_out.log
Application Internal Error - d:\fontes\testes\hwgui_bug\test.exe
Terminated at: 2025-03-19 16:22:09
Unrecoverable error 6005: Exception error:
...

Called from MAIN(551) in test.prg
O erro é no RETURN.
Não faz nenhum sentido.

Desafio para usuários hwgui

Enviado: 19 Mar 2025 16:59
por JoséQuintas
Eliminei todos os init e tooltip.
Sobraram 21kb, erro continua.
test.prg
(20.91 KiB) Baixado 107 vezes
Esqueci de mencionar: em xharbour funciona.

Desafio para usuários hwgui

Enviado: 19 Mar 2025 18:09
por JoséQuintas
hwguii.png
Application Internal Error - d:\fontes\testes\hwgui_bug\test.exe
Terminated at: 2025-03-19 17:57:04
Unrecoverable error 6005: Exception error:
...
Called from MAIN(410) in test.prg
test.prg
(18.76 KiB) Baixado 120 vezes
Menor.
Não sei antes, mas conforme executa, pode ser um erro ou outro.
No primeiro, torna-se obrigatório fechar no gerenciador de tarefas.

No acaso do segundo erro, é olhar o hb_out.log, não aparece erro na tela.

Desafio para usuários hwgui

Enviado: 19 Mar 2025 18:29
por JoséQuintas
Cheguei numa legal
Application Internal Error - d:\fontes\testes\hwgui_bug\test.exe
Terminated at: 2025-03-19 18:32:19
Unrecoverable error 9001: Error recovery failure
Called from __ERRINHANDLER(0)
Called from HTAB:HWG_SETFOCUS(264) in source\winapi\hcwindow.prg
Called from (b)MAIN(91) in test.prg
Called from HTAB:NOTIFY(328) in source\winapi\htab.prg
Called from ONNOTIFY(288) in source\winapi\hcwindow.prg
Called from (b)(_INITSTATICS00005)(0) in source\winapi\hcwindow.prg
Called from HWINDOW:ONEVENT(202) in source\winapi\hcwindow.prg
Called from HDIALOG:ONEVENT(239) in source\winapi\hdialog.prg
Called from HWG_DLGBOXINDIRECT(0)
Called from HDIALOG:ACTIVATE(176) in source\winapi\hdialog.prg
Called from MAIN(401) in test.prg
------------------------------------------------------------------------
Legal porque faz algum sentido pelo menos.
Isso poderia ser algo como destruir a janela da tab sem ter destruído primeiro o codeblock de notificações da tab.

Desafio para usuários hwgui

Enviado: 20 Mar 2025 08:09
por Itamar M. Lins Jr.
Olá!
É pra tentar eliminar o máximo de fonte, e continuar com erro.
Fui eliminando e aqui parou o erro. Primeiro pq não sei a causa do erro. Agora parece que eu sei....

Saudações,
Itamar M. Lins Jr.

Desafio para usuários hwgui

Enviado: 20 Mar 2025 08:18
por Itamar M. Lins Jr.
Olá!
Tem 2 erros.
Esse é 1.

Código: Selecionar todos

Called from MAIN(410) in teste1.prg
------------------------------------------------------------------------
Application Internal Error - C:\dev\testes\teste1.exe
Terminated at: 2025-03-20 08:20:29
Unrecoverable error 9001: Error recovery failure
Called from __ERRINHANDLER(0)
Called from HCHECKBUTTON:SETVALUE(264) in source\winapi\hcwindow.prg
Called from (b)MAIN(341) in teste1.prg
Called from __VALID(187) in source\winapi\hcheck.prg
Called from (b)HCHECKBUTTON_NEW(55) in source\winapi\hcheck.prg
Called from ONCOMMAND(364) in source\winapi\hcwindow.prg
Called from (b)(_INITSTATICS00005)(0) in source\winapi\hcwindow.prg
Called from HTAB:ONEVENT(202) in source\winapi\hcwindow.prg
Called from HWG_DLGBOXINDIRECT(0)
Called from HDIALOG:ACTIVATE(176) in source\winapi\hdialog.prg
Called from MAIN(405) in teste1.prg
------------------------------------------------------------------------
Ele não aparecia por conta do outro (principal) que esconde os demais.

Saudações,
Itamar M. Lins Jr.

Desafio para usuários hwgui

Enviado: 21 Mar 2025 12:11
por JoséQuintas
Fiz um teste alterando aqui mas não resolveu.

Código: Selecionar todos

METHOD DelControl( oCtrl ) CLASS HCustomWindow

   LOCAL h := oCtrl:handle, id := oCtrl:id
   LOCAL i

   DO WHILE .T.
      i := Ascan( ::aControls, { |o| hwg_Isptreq( o:Parent,h ) } )
      IF i == 0
         EXIT
      ENDIF
      ::DelControl( ::aControls[ i ] )
   ENDDO

   i := Ascan( ::aControls, { |o| hwg_Isptreq( o:handle,h ) } )
   hwg_Sendmessage( h, WM_CLOSE, 0, 0 )
   IF i != 0
      ADel( ::aControls, i )
      ASize( ::aControls, Len( ::aControls ) - 1 )
   ENDIF
A idéia era apagar controles-filho antes de apagar o controle-pai, caso esse fosse o problema.

Desafio para usuários hwgui

Enviado: 21 Mar 2025 12:18
por JoséQuintas
Pera aí que a coisa endoidou.
Rodei de novo e não deu erro.
Sei lá....

Desafio para usuários hwgui

Enviado: 21 Mar 2025 12:26
por JoséQuintas
Sei lá....
Fui compilar e o programa estava em execução sem janela.
Demorou um pouco mais, mas apareceu o hb_out.log, e o programa fechou.
Até aparecia no gerenciador de tarefas, mas fechou sozinho depois de alguns segundos.
Já teve esta situação antes.

Desafio para usuários hwgui

Enviado: 21 Mar 2025 18:57
por JoséQuintas
NÃO É HWGUI.
Acabei de gerar um erro parecido.
Application Internal Error - d:\fontes\integra\sefazclass\tests\test.exe
Terminated at: 2025-03-21 19:01:31
Unrecoverable error 6005: Exception error:

Exception Code:C0000005 ACCESS_VIOLATION
...
76180000 00025000 C:\Windows\System32\IMM32.DLL

Called from HPDF_PAGE_SETWIDTH(0)
Called from HBNFEDANFCE:NOVAPAGINA(251) in source\ze_sefaz_pdf_nfce.prg
Called from HBNFEDANFCE:GERAPDF(226) in source\ze_sefaz_pdf_nfce.prg
Called from HBNFEDANFCE:TOPDF(84) in source\ze_sefaz_pdf_nfce.prg
Called from HBNFEDAGERAL:TOPDF(179) in source\ze_sefaz_pdf_comum.prg
Called from TESTDANFE(379) in test.prg
Called from MAIN(120) in test.prg
Por isso acho que tem a ver com usar objeto que foi destruído e/ou não existe.