Alguém com GPF ao usar objetos?

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

Alguém com GPF ao usar objetos?

Mensagem por JoséQuintas »

Fiz uma descoberta meio esquisita, e já postei lá nos desenvolvedores:

ao usar uma variábel estática para a conexão MySql, eu tenho GPF ao sair do sistema.
Consegui resolver alterando o conteúdo da variável da conexão antes de sair.

Tipo:

Código: Selecionar todos

cnConexao := "any"
RETURN
Como comentário adicional, no VB é necessário algo especial no encerramento de variáveis objecto.

No VB6 tinha que usar SET CN = Nothing (algo como variavel = NIL )
E no VB.NET: cn.Dispose()

Se alguém estiver tendo GPF no sistema ao usar algum controle/dll externo, poderia fazer o teste pra confirmar se resolve.
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/
marcosgambeta
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 16 Jun 2005 22:53

Alguém com GPF ao usar objetos?

Mensagem por marcosgambeta »

José,

Está usando ADO na conexão com o MySQL ou algum outro recurso do Harbour ?
Atenciosamente,
Marcos Antonio Gambeta
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Alguém com GPF ao usar objetos?

Mensagem por JoséQuintas »

Isto:

cn := win_OleCreateObject("ADODB.Connection")

Se a variável for estática, precisa zerar o conteúdo antes de encerrar o sistema.

pode ser: cn := "any"
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

Alguém com GPF ao usar objetos?

Mensagem por JoséQuintas »

O teste prático:

Código: Selecionar todos

PROCEDURE Main
   LOCAL x
   x := MySqlConnection()
   ? ValType( X )
   ? ValType( MySqlConnection() )
   ? "AppcnMySql() is type " + ValType( AppcnMySql() )
   AppcnMySql( "any" )
   RETURN
   
FUNCTION AppCnMySql( xValue )
   STATIC AppcnMySql 
   IF ValType( AppcnMySql ) != "O"
      AppcnMySql := MySqlConnection()
   ENDIF
   IF xValue != NIL
      AppcnMySql := xValue
   ENDIF
   RETURN AppcnMySql

FUNCTION MySqlConnection()
   LOCAL ocn
   ocn := win_OleCreateObject( "ADODB.Connection" )
   ocn:ConnectionString := "Driver={MySql ODBC 3.51 Driver};Server=xserver;Option=131072;Stmt=;" + ;
      "Database=jpatecnologia;User ID=xuser;Password=xpassword;"
   ocn:CursorLocation    := 3 // cliente
   ocn:CommandTimeOut    := 30 // seconds
   ocn:ConnectionTimeOut := 30 // seconds
   RETURN ocn
Primeiro compilado do jeito que está:

Código: Selecionar todos

d:\testes\ado>hbmk2 test
Harbour 3.2.0dev (r1312270146)
Copyright (c) 1999-2013, http://harbour-project.org/
Compiling 'test.prg'...
Lines 28, Functions/Procedures 3
Generating C source output to 'd:\temp\hbmk_bmn2yk.dir\test.c'... Done.

d:\testes\ado>test

O
O
AppcnMySql() is type O
d:\testes\ado>
Agora bloqueando a linha que altera do conteúdo da variável antes de sair:
// AppcnMySql( "any" )

Código: Selecionar todos

d:\testes\ado>hbmk2 test
Harbour 3.2.0dev (r1312270146)
Copyright (c) 1999-2013, http://harbour-project.org/
Compiling 'test.prg'...
Lines 28, Functions/Procedures 3
Generating C source output to 'd:\temp\hbmk_0b8npw.dir\test.c'... Done.

d:\testes\ado>test

O
O
AppcnMySql() is type O
Unrecoverable error 6005: Exception error:

    Exception Code:C0000005
    Exception Address:004015CD
    EAX:00000000  EBX:003B41E4  ECX:0033188C  EDX:00331F0C
    ESI:02352720  EDI:003B423C  EBP:00000001
    CS:EIP:0023:004015CD  SS:ESP:002B:0028FE10
    DS:002B  ES:002B  FS:0053  GS:002B
    Flags:00010246
    CS:EIP: 8B 06 89 34 24 FF 50 08 83 EC 04 83 C4 14 5B 5E
    SS:ESP: 00000000 0036B648 FFFFFFFE 00411F2B 00000002 003B41E4 003B41D4 004193B5 003B41E4 0036D4C8 00000030 00411F2B
00000000 003B4224 00000001 00456789

    C stack:
    EIP:     EBP:       Frame: OldEBP, RetAddr, Params...

Modules:
0x00400000 0x0014C000 d:\testes\ado\test.exe
0x770D0000 0x00180000 C:\Windows\SysWOW64\ntdll.dll
0x76090000 0x00110000 C:\Windows\syswow64\kernel32.dll
0x757E0000 0x00047000 C:\Windows\syswow64\KERNELBASE.dll
0x764F0000 0x000AC000 C:\Windows\syswow64\msvcrt.dll
0x74840000 0x0015C000 C:\Windows\syswow64\OLE32.dll
0x75B30000 0x00090000 C:\Windows\syswow64\GDI32.dll
0x75970000 0x00100000 C:\Windows\syswow64\USER32.dll
0x762C0000 0x000A0000 C:\Windows\syswow64\ADVAPI32.dll
0x75950000 0x00019000 C:\Windows\SysWOW64\sechost.dll
0x75F30000 0x000F0000 C:\Windows\syswow64\RPCRT4.dll
0x747B0000 0x00060000 C:\Windows\syswow64\SspiCli.dll
0x747A0000 0x0000C000 C:\Windows\syswow64\CRYPTBASE.dll
0x770A0000 0x0000A000 C:\Windows\syswow64\LPK.dll
0x763A0000 0x0009D000 C:\Windows\syswow64\USP10.dll
0x75A70000 0x0008F000 C:\Windows\syswow64\OLEAUT32.DLL
0x765A0000 0x00060000 C:\Windows\system32\IMM32.DLL
0x74A30000 0x000CC000 C:\Windows\syswow64\MSCTF.dll
0x72950000 0x00080000 C:\Windows\system32\uxtheme.dll
0x749A0000 0x00083000 C:\Windows\syswow64\CLBCatQ.DLL
0x73710000 0x00016000 C:\Windows\system32\CRYPTSP.dll
0x736D0000 0x0003B000 C:\Windows\system32\rsaenh.dll
0x70B80000 0x0000E000 C:\Windows\system32\RpcRtRemote.dll


d:\testes\ado>
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/
marcosgambeta
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 16 Jun 2005 22:53

Alguém com GPF ao usar objetos?

Mensagem por marcosgambeta »

José,

Vi na lista de desenvolvimento do Harbour que o erro foi corrigido. Bom para todo mundo. É por isto que é importante relatar qualquer comportamento estranho no uso do Harbour ou, pelo menos, tentar identificar a causa do problema. Pode ser um erro do desenvolvedor, um erro da ferramenta externa ou mesmo um erro no Harbour.

Recentemente, andei fazendo muitos testes com ADO + Access (.mdb e .accdb) e Firebird. Mas como não usei variáveis STATIC, não tive problemas de GPF. Já no seu caso, o problema apareceu.

Parabéns pela atitude. Somente assim teremos um Harbour cada vez mais estável e robusto.
Atenciosamente,
Marcos Antonio Gambeta
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Alguém com GPF ao usar objetos?

Mensagem por Itamar M. Lins Jr. »

2014-01-02 18:41 UTC+0100 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/vm/hvm.c
* clear STATIC variables before releasing thread specific data.
It should resolve potential problems with code using TSD to activate
cleanup procedure and later cannot correctly execute pointer item
destructors, i.e. OLE subsystem.

best regards
Przemek
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Alguém com GPF ao usar objetos?

Mensagem por JoséQuintas »

Vi essa atualização de hoje.
Já baixei, testei e não tem mais GPF.
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