Error irrecuperable 9011: hb_xfree llamado con un puntero nu

Error irrecuperable 9011: hb_xfree llamado con un puntero nu

Postby rolando » Wed Sep 11, 2013 4:17 pm

Buenas tardes,

He pasado mi aplicación a FWH 1302 y comenzaron las cuestiones por diferencia de versión (esta aplicación fue hecha originalmente con FWH 1004).

Hasta ahora todas las cuestiones de incompatibilidad parecían resueltas, pero surgió algo a lo que no le encuentro la vuelta.

Funciona correctamente durante horas y de pronto, al cerrar un dialog en el cual edito un campo de una DBF, aparece un mensaje de error:

Error irrecuperable 9011:
hb_xfree llamado con un puntero nulo


Y la aplicación deja de funcionar y se cierra.

He encontrado en el "Error.ch" de xHarbour el "HB_EI_XFREENULL" que sería el error correspondiente, pero de ahí no sé como seguir.

¿Alguna ayuda?

Gracias.

Rolando :D
User avatar
rolando
 
Posts: 593
Joined: Sat May 12, 2007 11:47 am
Location: San Nicolás - BA - ARGENTINA

Re: Error irrecuperable 9011: hb_xfree llamado con un puntero nu

Postby Antonio Linares » Wed Sep 11, 2013 6:28 pm

Rolando,

No tienes la lista de llamadas completa ? El "calls stack" que suele aparecer en hb_out.log o en error.log según se produzca GPF ó no.

Es para saber desde donde se ha usado ese puntero nulo.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41366
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Error irrecuperable 9011: hb_xfree llamado con un puntero nu

Postby Antonio Linares » Wed Sep 11, 2013 6:30 pm

Rolando,

Que versión de xHarbour estas usando ? Por favor usa la más reciente.

Cuando os convencereis de que hay que usar Harbour... :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41366
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Error irrecuperable 9011: hb_xfree llamado con un puntero nu

Postby rolando » Wed Sep 11, 2013 9:41 pm

Antonio,

Gracias por responder.

No generó ningún archivo .log al dar el error.

Estoy usando: xHarbour Compiler build 1.2.1 (SimpLex) (Rev. 9421) >>>> Creo que es la última.

En cuando a convencerme de usar HARBOUR no tendría problema cuando, por lo que dices, sería para mejorar.

Supongo que en el foro encontraré como hacerlo o alguien me indicará como.

Rolando
User avatar
rolando
 
Posts: 593
Joined: Sat May 12, 2007 11:47 am
Location: San Nicolás - BA - ARGENTINA

Re: Error irrecuperable 9011: hb_xfree llamado con un puntero nu

Postby Antonio Linares » Wed Sep 11, 2013 11:08 pm

Rolando,

Como te aparece ese error ? En la ventana de terminal (msdos) ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41366
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Error irrecuperable 9011: hb_xfree llamado con un puntero nu

Postby rolando » Thu Sep 12, 2013 12:34 am

Antonio,

Aparece un dialog tipo MsgInfo cuyo título es "Error irrecuperable 9011:" y el mensaje "hb_xfree llamado con un puntero nulo". Al aceptar, el mensaje se cierra y también la aplicación.

Como el error lo hace esporádicamente, cuando lo haga copiaré con printscreen y publicaré.

Gracias

Rolando :D
User avatar
rolando
 
Posts: 593
Joined: Sat May 12, 2007 11:47 am
Location: San Nicolás - BA - ARGENTINA

Re: Error irrecuperable 9011: hb_xfree llamado con un puntero nu

Postby Antonio Linares » Thu Sep 12, 2013 1:06 am

Rolando,

Se me ocurre una posible forma de localizar el error, pero con el riesgo de que anulariamos el sistema de errores internos, asi que esta solucion solo deberias usarla hasta que localicemos de donde proviene.

Prueba a anadir este codigo a tu aplicacion y dime si te compila bien:

Code: Select all  Expand view

#pragma BEGINDUMP

#include <windows.h>

void hb_errInternal( int i1, int i2, int i3, int i4 )
{
   MessageBox( 0, "ahora yo controlo los errores internos", "ok", 0 );
}

#pragma ENDDUMP
 
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41366
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Error irrecuperable 9011: hb_xfree llamado con un puntero nu

Postby Antonio Linares » Thu Sep 12, 2013 1:21 am

Aqui tienes un ejemplo completo de algo que no se debe hacer NUNCA, pero que en ocasiones puede ayudarnos mucho:

Fijate que gracias a este truco vamos a poder saber desde donde se ha generado el fatídico error interno de una forma
relativamente facil.

Code: Select all  Expand view
function Main()

   GeneroError()
   
return nil

#pragma BEGINDUMP

#include <windows.h>
#include <hbapi.h>
#include <hbapierr.h>

HB_FUNC( GENEROERROR )
{
   hb_xfree( 0 );
}  

void hb_errInternal( HB_ERRCODE errCode, const char * szText, const char * szPar1, const char * szPar2 )
{
   hb_errRT_BASE( 0, 0, "intentando resolver un error interno", "probando", 0 );
}

#pragma ENDDUMP


Image
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41366
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Error irrecuperable 9011: hb_xfree llamado con un puntero nu

Postby rolando » Thu Sep 12, 2013 12:29 pm

Antonio,

Quizás no esté haciendo algo bien.

Puse tu código en un "Errores.prg". Al compilarlo en forma aislada no da ningún error, pero al compilar y enlazar con la aplicación, presenta estos errores:

Code: Select all  Expand view
Error E2356 D:\\RJCTaller\\PRGftp1302\\errores.prg 21: Type mismatch in redeclaration of 'hb_errInternal'
Error E2344 D:\xHarbour2012\INCLUDE\hbapierr.h 220: Earlier declaration of 'hb_errInternal'
Warning W8057 D:\\RJCTaller\\PRGftp1302\\errores.prg 23: Parameter 'errCode' is never used in function hb_errInternal
*** 2 errors in Compile ***
Borland Resource Compiler  Version 5.40
Copyright (c) 1990, 1999 Inprise Corporation.  All rights reserved.
Turbo Incremental Link 5.69 Copyright (c) 1997-2005 Borland
Fatal: Unable to open file 'ERRORES.OBJ'
RJCElectronica.EXE - 3 error(es), 1 advertencia(s)


Este es el PRG:
Code: Select all  Expand view
function Main()

   GeneroError()
   
return nil

#pragma BEGINDUMP

#include <windows.h>
#include <hbapi.h>
#include <hbapierr.h>

HB_FUNC( GENEROERROR )
{
   hb_xfree( 0 );
}  

void hb_errInternal( HB_ERRCODE errCode, const char * szText, const char * szPar1, const char * szPar2 )
{
   hb_errRT_BASE( 0, 0, "intentando resolver un error interno", "probando", 0 );
}

#pragma ENDDUMP


Gracias.

Rolando :D
User avatar
rolando
 
Posts: 593
Joined: Sat May 12, 2007 11:47 am
Location: San Nicolás - BA - ARGENTINA

Re: Error irrecuperable 9011: hb_xfree llamado con un puntero nu

Postby Antonio Linares » Thu Sep 12, 2013 12:37 pm

Rolando,

Con xHarbour tienes que cambiar esta línea asi:

void hb_errInternal( ULONG ulIntCode, const char * szText, const char * szPar1, const char * szPar2 )
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41366
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Error irrecuperable 9011: hb_xfree llamado con un puntero nu

Postby rolando » Thu Sep 12, 2013 1:57 pm

Antonio,

Hice lo que indicaste y ahora compila sin problemas.

Puse una llamada a la funcion en el activate window de la window principal y la función se activa ok.

La pregunta es: ¿cómo debo usarlo para que indique el error cuando realmente se produzca?.

Gracias.

Rolando :D
User avatar
rolando
 
Posts: 593
Joined: Sat May 12, 2007 11:47 am
Location: San Nicolás - BA - ARGENTINA

Re: Error irrecuperable 9011: hb_xfree llamado con un puntero nu

Postby Antonio Linares » Thu Sep 12, 2013 4:36 pm

Rolando,

Cuando el error se produzca, tu función hb_errInternal() funcionará automaticamente :-)

y te mostrará desde donde se produce el error interno
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41366
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Error irrecuperable 9011: hb_xfree llamado con un puntero nu

Postby rolando » Thu Sep 12, 2013 5:13 pm

Antonio,

Comprendido.

Surgió algo nuevo al recompilar y enlazar todo. El UE muestra un warning:

Code: Select all  Expand view
Warning W8057 D:\\RJCTaller\\PRGftp1302\\errores.prg 24: Parameter 'ulIntCode' is never used in function hb_errInternal


Como no entiendo bien esta función, no se si será importante o no. Muchas gracias.

Rolando :D
User avatar
rolando
 
Posts: 593
Joined: Sat May 12, 2007 11:47 am
Location: San Nicolás - BA - ARGENTINA

Re: Error irrecuperable 9011: hb_xfree llamado con un puntero nu

Postby Antonio Linares » Thu Sep 12, 2013 6:12 pm

Es solo un aviso sin importancia de que un parámetro no se está usando. Es correcto.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41366
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Error irrecuperable 9011: hb_xfree llamado con un puntero nu

Postby rolando » Thu Sep 12, 2013 6:23 pm

Ok, Gracias.

Ya está funcionando. Hoy "justamente" no dio error en toda la jornada.

Pero cuando lo haga, estará preparado. Gracias.

Rolando :D
User avatar
rolando
 
Posts: 593
Joined: Sat May 12, 2007 11:47 am
Location: San Nicolás - BA - ARGENTINA

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 33 guests