Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2010-11

error al liberar formulario

26 messages · 5 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Paola Bruccoleri

Hola a todos..

En las opciones del men� hago esto para crear el form correspondiente:

   Application.CreateForm(TABMEquipos, ABMEquipos);
   ABMEquipos.ShowModal();

ahora..... si hago esto:

   Application.CreateForm(TABMEquipos, ABMEquipos);
   try
     ABMEquipos.ShowModal;
   finally
     FreeAndNil(ABMEquipos);
   end;

me sale un SIGSEGV al llegar al freeandnil..

qu� estar� pasando?
chauuuuuuuuu

Reply by email

Christian Ortiz
to Paola Bruccoleri

El 05/11/2010 04:13 p.m., Paola Bruccoleri escribi�:

Show quoted text 15 lines
Hola a todos.. En las opciones del men� hago esto para crear el form correspondiente: Application.CreateForm(TABMEquipos, ABMEquipos); ABMEquipos.ShowModal(); ahora..... si hago esto: Application.CreateForm(TABMEquipos, ABMEquipos); try ABMEquipos.ShowModal; finally FreeAndNil(ABMEquipos); end;

creo que, si vas a usar el FreeAndNil deberias poner tu formulario que NO se cree en tiempo de ejecucion y lo crees tu
para luego liberarlo ...

Show quoted text 11 lines
me sale un SIGSEGV al llegar al freeandnil.. qu� estar� pasando? chauuuuuuuuu _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

Reply by email

Paola Bruccoleri
to Christian Ortiz

El 05/11/2010 07:17 p.m., Christian Ortiz escribi�:

Show quoted text 19 lines
El 05/11/2010 04:13 p.m., Paola Bruccoleri escribi�: > Hola a todos.. > > En las opciones del men� hago esto para crear el form correspondiente: > > Application.CreateForm(TABMEquipos, ABMEquipos); > ABMEquipos.ShowModal(); > > ahora..... si hago esto: > > Application.CreateForm(TABMEquipos, ABMEquipos); > try > ABMEquipos.ShowModal; > finally > FreeAndNil(ABMEquipos); > end; creo que, si vas a usar el FreeAndNil deberias poner tu formulario que NO se cree en tiempo de ejecucion y lo crees tu para luego liberarlo ...

es que ya est� indicado que el form no se cree; en las opciones del proyecto, formularios, solo est� el form principal

Reply by email

Christian Ortiz
to Paola Bruccoleri

El 05/11/2010 04:19 p.m., Paola Bruccoleri escribi�:

Show quoted text 22 lines
El 05/11/2010 07:17 p.m., Christian Ortiz escribi�: > El 05/11/2010 04:13 p.m., Paola Bruccoleri escribi�: >> Hola a todos.. >> >> En las opciones del men� hago esto para crear el form correspondiente: >> >> Application.CreateForm(TABMEquipos, ABMEquipos); >> ABMEquipos.ShowModal(); >> >> ahora..... si hago esto: >> >> Application.CreateForm(TABMEquipos, ABMEquipos); >> try >> ABMEquipos.ShowModal; >> finally >> FreeAndNil(ABMEquipos); >> end; > creo que, si vas a usar el FreeAndNil deberias poner tu formulario > que NO se cree en tiempo de ejecucion y lo crees tu > para luego liberarlo ... es que ya est� indicado que el form no se cree; en las opciones del proyecto, formularios, solo est� el form principal

Entonces NO puedes llamarlo de la forma ShowModal, debes crearlo y luego llamarlo ... si le haces el debug, te daras cuenta que el error te da en el ShowModal

Show quoted text 6 lines
_______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

Reply by email

Paola Bruccoleri
to Paola Bruccoleri: El 05/11/2010 07:17 p.m., Christian Ortiz escribi�: es que ya est� indicado que el…

creo que, si vas a usar el FreeAndNil deberias poner tu formulario que NO se cree en tiempo de ejecucion y lo crees tu

> para luego liberarlo ... es que ya est� indicado que el form no se cree; en las opciones del proyecto, formularios, solo est� el form principal

aclaro que en ese form uso un tgradbutton

en el onclic del bot�n SALIR hago un close

en el onclose del form:
   dbEquipos.Close;
   FreeAndNil(DMPrincipal);  // es un datamodule
   CloseAction:=caFree ;

Reply by email

Paola Bruccoleri
to Christian Ortiz: El 05/11/2010 04:19 p.m., Paola Bruccoleri escribi�: Entonces NO puedes llamarlo de la…

para luego liberarlo ...

Show quoted text 5 lines
> es que ya est� indicado que el form no se cree; en las opciones del > proyecto, formularios, solo est� el form principal Entonces NO puedes llamarlo de la forma ShowModal, debes crearlo y luego llamarlo ... si le haces el debug, te daras cuenta que el error te da en el ShowModal

a ver...
es que primero lo creo y luego lo llamo; antes del try est� el oncreate... y cuando depuro, el error me sale en el freeandnil

Reply by email

Paola Bruccoleri
to Paola Bruccoleri

El 05/11/2010 07:27 p.m., Paola Bruccoleri escribi�:

Show quoted text 10 lines
para luego liberarlo ... >> es que ya est� indicado que el form no se cree; en las opciones del >> proyecto, formularios, solo est� el form principal > Entonces NO puedes llamarlo de la forma ShowModal, debes crearlo y > luego llamarlo ... si le haces el debug, te daras cuenta que el error > te da en el ShowModal a ver... es que primero lo creo y luego lo llamo; antes del try est� el oncreate... y cuando depuro, el error me sale en el freeandnil

si hago esto:

var
   f: TABMEquipos;
begin
   f:= TABMEquipos.Create(Self);
   try
       f.ShowModal;
   finally
       FreeAndNil(f);
   end;
end;

tb sale el SIGSEGV en el freeandnil

Reply by email

Fredy Gonzales
to Paola Bruccoleri

Eso tambien me esta pasando a mi, pero como yo tengo los formularios embebidos en un panel y no en showmodal , lo que hice fue cambiar su borderstyle a
bsSizeToolWin y me funciona si error.

Creo que es un error de la version.

FG

Earlier message 35 lines
----- Original Message ----- From: "Paola Bruccoleri" <pbruccoleri en adinet.com.uy> To: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org> Sent: Friday, November 05, 2010 4:45 PM Subject: Re: [Lazarus-es] error al liberar formulario El 05/11/2010 07:27 p.m., Paola Bruccoleri escribi�: > para luego liberarlo ... >>> es que ya est� indicado que el form no se cree; en las opciones del >>> proyecto, formularios, solo est� el form principal >> Entonces NO puedes llamarlo de la forma ShowModal, debes crearlo y luego >> llamarlo ... si le haces el debug, te daras cuenta que el error te da en >> el ShowModal > > a ver... > es que primero lo creo y luego lo llamo; antes del try est� el oncreate... > y cuando depuro, el error me sale en el freeandnil si hago esto: var f: TABMEquipos; begin f:= TABMEquipos.Create(Self); try f.ShowModal; finally FreeAndNil(f); end; end; tb sale el SIGSEGV en el freeandnil

Reply by email

Hector S. Ponce
to Paola Bruccoleri: El 05/11/2010 07:27 p.m., Paola Bruccoleri escribi�: si hago esto: var f: TABMEquipos;…

as� deber�a funcionar, asi lo uso yo:

var
   f: TABMEquipos;
begin
   f:= TABMEquipos.Create(Self);
   try
       f.ShowModal;
   finally
       f.Free;
   end;
end;

El 05/11/2010 06:45 p.m., Paola Bruccoleri escribi�:

Show quoted text 31 lines
El 05/11/2010 07:27 p.m., Paola Bruccoleri escribi�: > para luego liberarlo ... >>> es que ya est� indicado que el form no se cree; en las opciones del >>> proyecto, formularios, solo est� el form principal >> Entonces NO puedes llamarlo de la forma ShowModal, debes crearlo y >> luego llamarlo ... si le haces el debug, te daras cuenta que el >> error te da en el ShowModal > > a ver... > es que primero lo creo y luego lo llamo; antes del try est� el > oncreate... y cuando depuro, el error me sale en el freeandnil si hago esto: var f: TABMEquipos; begin f:= TABMEquipos.Create(Self); try f.ShowModal; finally FreeAndNil(f); end; end; tb sale el SIGSEGV en el freeandnil _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

Reply by email

Hector S. Ponce
to Fredy Gonzales: Eso tambien me esta pasando a mi, pero como yo tengo los formularios embebidos en un…

como es eso de formularios embebidos en un panel??? a que te referis?

El 05/11/2010 06:46 p.m., Fredy Gonzales escribi�:

Show quoted text 57 lines
Eso tambien me esta pasando a mi, pero como yo tengo los formularios embebidos en un panel y no en showmodal , lo que hice fue cambiar su borderstyle a bsSizeToolWin y me funciona si error. Creo que es un error de la version. FG ----- Original Message ----- From: "Paola Bruccoleri" <pbruccoleri en adinet.com.uy> To: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org> Sent: Friday, November 05, 2010 4:45 PM Subject: Re: [Lazarus-es] error al liberar formulario El 05/11/2010 07:27 p.m., Paola Bruccoleri escribi�: > para luego liberarlo ... >>> es que ya est� indicado que el form no se cree; en las opciones del >>> proyecto, formularios, solo est� el form principal >> Entonces NO puedes llamarlo de la forma ShowModal, debes crearlo y >> luego llamarlo ... si le haces el debug, te daras cuenta que el >> error te da en el ShowModal > > a ver... > es que primero lo creo y luego lo llamo; antes del try est� el > oncreate... y cuando depuro, el error me sale en el freeandnil si hago esto: var f: TABMEquipos; begin f:= TABMEquipos.Create(Self); try f.ShowModal; finally FreeAndNil(f); end; end; tb sale el SIGSEGV en el freeandnil _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es _______________________________________________ Lazarus-es mailing list Lazarus-es en lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

Reply by email

Fredy Gonzales
to Hector S. Ponce

Mira el ultimo ejemplo que puse en el blog, con respecto a un ejemplo en un sistema de facturacion,

Seguro que si lo prueban ahora les saldra ese error, pero si le cambian lo que dije, el problema se corregira.

http://purihuaman.blogspot.com/

Saludos.

FG

Earlier message 72 lines
----- Original Message ----- From: "Hector S. Ponce" <hectorsponce en gmail.com> To: "Spanish version of Lazarus List" <lazarus-es en lists.lazarus.freepascal.org> Sent: Friday, November 05, 2010 4:50 PM Subject: Re: [Lazarus-es] error al liberar formulario como es eso de formularios embebidos en un panel??? a que te referis? El 05/11/2010 06:46 p.m., Fredy Gonzales escribi�: > Eso tambien me esta pasando a mi, pero como yo tengo los formularios > embebidos en un panel y no en showmodal , lo que hice fue cambiar su > borderstyle a > bsSizeToolWin y me funciona si error. > > Creo que es un error de la version. > > FG > > > > > > ----- Original Message ----- From: "Paola Bruccoleri" > <pbruccoleri en adinet.com.uy> > To: "Spanish version of Lazarus List" > <lazarus-es en lists.lazarus.freepascal.org> > Sent: Friday, November 05, 2010 4:45 PM > Subject: Re: [Lazarus-es] error al liberar formulario > > > El 05/11/2010 07:27 p.m., Paola Bruccoleri escribi�: >> para luego liberarlo ... >>>> es que ya est� indicado que el form no se cree; en las opciones del >>>> proyecto, formularios, solo est� el form principal >>> Entonces NO puedes llamarlo de la forma ShowModal, debes crearlo y >>> luego llamarlo ... si le haces el debug, te daras cuenta que el error te >>> da en el ShowModal >> >> a ver... >> es que primero lo creo y luego lo llamo; antes del try est� el >> oncreate... y cuando depuro, el error me sale en el freeandnil > si hago esto: > > var > f: TABMEquipos; > begin > f:= TABMEquipos.Create(Self); > try > f.ShowModal; > finally > FreeAndNil(f); > end; > end; > > tb sale el SIGSEGV en el freeandnil > > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus.freepascal.org > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es > > _______________________________________________ > Lazarus-es mailing list > Lazarus-es en lists.lazarus.freepascal.org > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es

Reply by email

José Mejuto
to Paola Bruccoleri: creo que, si vas a usar el FreeAndNil deberias poner tu formulario que NO se cree en…

Hello Paola,

Friday, November 5, 2010, 10:24:42 PM, you wrote:

PB> en el onclose del form:
PB>    dbEquipos.Close;
PB>    FreeAndNil(DMPrincipal);  // es un datamodule
PB>    CloseAction:=caFree ;
       ^^^^^^^^^^^^^^^^^^^^^

El formulatio ya se libera al cerrarse (autom�ticamente debido al caFree), no puedes hacerle luego un freeAndNil a esa variable, por que la direcci�n a la que apunta ya ha sido liberada.

Best regards, Jos�

Reply by email

Paola Bruccoleri
to José Mejuto

El 05/11/2010 08:13 p.m., Jos� Mejuto escribi�:

Show quoted text 13 lines
Hello Paola, Friday, November 5, 2010, 10:24:42 PM, you wrote: PB> en el onclose del form: PB> dbEquipos.Close; PB> FreeAndNil(DMPrincipal); // es un datamodule PB> CloseAction:=caFree ; ^^^^^^^^^^^^^^^^^^^^^ El formulatio ya se libera al cerrarse (autom�ticamente debido al caFree), no puedes hacerle luego un freeAndNil a esa variable, por que la direcci�n a la que apunta ya ha sido liberada.

si, pero hay algo raro y que no entiendo....

acabo de descubrir que el l�o est� en el FreeAndNil(DMPrincipal); (es un datamodule)
lo coment� y ahora me funciona todo correctamente (por lo menos en las pruebas iniciales que hice); incluso, no se me cuelga la aplicaci�n luego de cerrar el reporte.
Todas estas pruebas eran en base a mi primer problema, el del reporte...

Les explico:
el DMPrincipal se crea al abrir ese form, y supuestamente se destruye en el onclose...

procedure TABMEquipos.FormCreate(Sender: TObject);
begin
   Application.CreateForm(TDMPrincipal,DMPrincipal);
   dbEquipos.Open;
end;
procedure TABMEquipos.FormClose(Sender: TObject; var CloseAction:
TCloseAction);
begin
   dbEquipos.Close;
   //DMPrincipal.Free;
   CloseAction:=caFree ;
end;

ahora.... el datamodule tiene estos eventos:

procedure TDMPrincipal.DataModuleCreate(Sender: TObject);
var
   cPathWithFileDB : String ;
begin
   cPathWithFileDB := Principal.cPathDB + Principal.cFileDB;
   try
     ServiamConnectionDB.Database  := '';
     ServiamConnectionDB.Database  := cPathWithFileDB;   // alias:
serviam por si lo uso
     ServiamConnectionDB.Connected := True ;
   except
     MessageDlg('��� Atenci�n...!!!','��� No se pudo conectar a la base
de datos...!!! -> ' + #13 +
              cPathWithFileDB,mtWarning,[mbOK],'0');
   end;
End;
procedure TDMPrincipal.DataModuleDestroy(Sender: TObject);
begin
   ServiamConnectionDB.Connected :=False ;
end;

qu� tiene que ver que comentando el FreeAndNil(DMPrincipal) ya no me cause problemas??

chauuuuuuuu

Reply by email

José Mejuto
to Paola Bruccoleri

Hello Paola,

Saturday, November 6, 2010, 12:10:35 AM, you wrote:

PB>    Application.CreateForm(TDMPrincipal,DMPrincipal);

Aqu� le dices que el DMPrincipal es dependiente de la destrucci�n de Application.

PB> procedure TABMEquipos.FormClose(Sender: TObject; var CloseAction: PB> TCloseAction);
PB> begin
PB> dbEquipos.Close;
PB> //DMPrincipal.Free;
PB> CloseAction:=caFree ;
PB> end;
PB> ahora.... el datamodule tiene estos eventos:
[...]
PB> qu� tiene que ver que comentando el FreeAndNil(DMPrincipal) ya no me PB> cause problemas??

Si tienes en TABMEquipos controles que dependen de conexiones o queries o algo que est� en DMPrincipal, si liberas DMPrincipal, al hacer el close del formulario, estos controles (como un datagrid) intentar�n cerrar el SQL que est� en DMPrincipal, pero oh! sorpresa, DMPrincipal ya no existe!!! :) KBoom!

Con los datamodules, o los abres al principio del programa, y los dejas ah� hasta que lo cierres, o bien los usas de este modo:

DM:=TDataModule.Create(Self);
Form:=TForm.Create(Self);
Form.ShowModal;
Form.Free;
FreeAndNIL(DM);

Suponiendo que DM sea el nombre global del datamodule.

Si tienes muchos, y no quieres que consuman memoria, pero abrirlos todos al principio, implementas un datamodule.Use y un datamodule.release, de modo que cuando el contador de release llegue a cero, (contador de referencias) cierre todos los SQL y todas las conexiones. Cuando haces .Use si el contador es cero, abres todas las conexiones (Open) y activas los SQL. Quedar�a algo como:

DM.Use;
Form:=TForm.Create(Self);
Form.ShowModal;
Form.Free;
DM.Release;

Con la ventaja que al cerrar del modo que tu haces:

begin
   dbEquipos.Close;
   DMPrincipal.Release;
   CloseAction:=caFree ;
end;

Si el contador es cero, cierra los SQL y las conexiones, pero NO destruye los objetos, cosa que har� TApplication al cerrar el programa.

Best regards, Jos�

Reply by email

Paola Bruccoleri
to José Mejuto

El 05/11/2010 10:14 p.m., Jos� Mejuto escribi�:

Hola Jos�...
muchas gracias por las aclaraciones...

Show quoted text 5 lines
Si tienes en TABMEquipos controles que dependen de conexiones o queries o algo que est� en DMPrincipal, si liberas DMPrincipal, al hacer el close del formulario, estos controles (como un datagrid) intentar�n cerrar el SQL que est� en DMPrincipal, pero oh! sorpresa, DMPrincipal ya no existe!!! :) KBoom!

si, el TABMEquipos tiene un rxdbgrid asociado a un tztable.

Con los datamodules, o los abres al principio del programa, y los dejas ah� hasta que lo cierres, o bien los usas de este modo:

y no alcanza con comentar el DMPrincipal.Free? o no es muy prolijo? Cuando hago un CloseAction:= caFree, qu� pasa con el DMPrincipal? se ejecuta su evento onDestroy?

Este m�todo lo tengo en varios ABM, que te dir�a son casi id�nticos, cambian las tablas... lo que todav�a no entiendo es porqu� esto pasa solo en algunos..

chauuuuuuuu

Reply by email

José Mejuto
to Paola Bruccoleri

Hello Paola,

Saturday, November 6, 2010, 11:52:26 AM, you wrote:

PB> muchas gracias por las aclaraciones...

Show quoted text 5 lines
> Si tienes en TABMEquipos controles que dependen de conexiones o > queries o algo que est� en DMPrincipal, si liberas DMPrincipal, al > hacer el close del formulario, estos controles (como un datagrid) > intentar�n cerrar el SQL que est� en DMPrincipal, pero oh! sorpresa, > DMPrincipal ya no existe!!! :) KBoom!

PB> si, el TABMEquipos tiene un rxdbgrid asociado a un tztable.

> Con los datamodules, o los abres al principio del programa, y los > dejas ah� hasta que lo cierres, o bien los usas de este modo:

PB> y no alcanza con comentar el DMPrincipal.Free? o no es muy prolijo? PB> Cuando hago un CloseAction:= caFree, qu� pasa con el DMPrincipal? se PB> ejecuta su evento onDestroy?
PB> Este m�todo lo tengo en varios ABM, que te dir�a son casi id�nticos, PB> cambian las tablas... lo que todav�a no entiendo es porqu� esto pasa PB> solo en algunos..

Para detectar estos problemas compila el proyecto con la opci�n de heaptrc "Proyecto -> Opciones -> Enlazado -> Usar heaptrc", ya que cada vez que liberas un bloque de memoria, heaptrc lo marca para que si intentas usarlo despu�s de ser liberado siempre de error. En compilaciones normales puede dar error o no, es cuesti�n de azar. Si haces un DMPrincipal.free sin usar heaptrc, simplemente se libera la memoria, de modo que si intentas acceder de nuevo al objeto liberado la informaci�n correcta puede seguir ah� o no, depende del azar, si sigue ah�, pues no dar� error, pero si el memory manager ya le ha asignado ese bloque liberado a otro objeto, el contenido ser� basura y kboom!. Te pongo un ejemplo:

program test1;
var
  p: Pchar;
  s: ansistring;
begin
  s:='Esto es una prueba';
  p:=pchar(s);
  s:='';
  Writeln(p);
end.

Qu� se supone que deber�a imprimir writeln(p) ? La memoria de s ya ha sido liberada, pero el texto sigue en el mismo sitio... Si de casualidad otro objeto coje ese bloque de memoria, la informaci�n ser� ruido.

Best regards, Jos�

Reply by email

Paola Bruccoleri
to José Mejuto

El 06/11/2010 10:55 a.m., Jos� Mejuto escribi�:

Show quoted text 13 lines
Para detectar estos problemas compila el proyecto con la opci�n de heaptrc "Proyecto -> Opciones -> Enlazado -> Usar heaptrc", ya que cada vez que liberas un bloque de memoria, heaptrc lo marca para que si intentas usarlo despu�s de ser liberado siempre de error. En compilaciones normales puede dar error o no, es cuesti�n de azar. Si haces un DMPrincipal.free sin usar heaptrc, simplemente se libera la memoria, de modo que si intentas acceder de nuevo al objeto liberado la informaci�n correcta puede seguir ah� o no, depende del azar, si sigue ah�, pues no dar� error, pero si el memory manager ya le ha asignado ese bloque liberado a otro objeto, el contenido ser� basura y kboom!. Te pongo un ejemplo:

esta opci�n no la sab�a..!!!
ahora estoy haciendo pruebas, y en vez de aclararme m�s el panorama, me estoy enloqueciendo. :)
Tengo 2 abm casi casi id�nticos: solo cambia la tabla. Haciendo simplemente la prueba de entrar a uno de ellos y salir sin hacer nada; al cerrar el programa me indica que se ha liberado todo correctamente. En cambio si hago lo mismo con el otro abm, me quedan 4 unfreed memory blocks!! lo que no s� es c�mo descubrirlos!! Obviamente si entro y salgo varias veces de esa opci�n, se me multiplican x 4.

chauuuuuuuu

Reply by email

José Mejuto
to Paola Bruccoleri

Hello Paola,

Saturday, November 6, 2010, 2:56:38 PM, you wrote:

PB> esta opci�n no la sab�a..!!!
PB> ahora estoy haciendo pruebas, y en vez de aclararme m�s el panorama, me PB> estoy enloqueciendo. :)
PB> Tengo 2 abm casi casi id�nticos: solo cambia la tabla. Haciendo PB> simplemente la prueba de entrar a uno de ellos y salir sin hacer nada; PB> al cerrar el programa me indica que se ha liberado todo correctamente. PB> En cambio si hago lo mismo con el otro abm, me quedan 4 unfreed memory PB> blocks!! lo que no s� es c�mo descubrirlos!! Obviamente si entro y salgo PB> varias veces de esa opci�n, se me multiplican x 4.

Pues mira en el listado que te muestra donde se "allocan" esos memory blocks, te pondr� un "backtrace" del orden de funciones que se han usado para llegar ah�. Quiz� te sea m�s c�modo que pongas la variable de entorno:

HEAPTRC="log=C:\temp\heaptrc.log nohalt"

De modo que toda la informaci�n del heaptrc se va a ese fichero y no sale en un msgbox al final de la ejecuci�n. Es m�s f�cil para investigar.

Best regards, Jos�

Reply by email

Paola Bruccoleri
to José Mejuto

El 06/11/2010 01:28 p.m., Jos� Mejuto escribi�:

Show quoted text 7 lines
HEAPTRC="log=C:\temp\heaptrc.log nohalt" De modo que toda la informaci�n del heaptrc se va a ese fichero y no sale en un msgbox al final de la ejecuci�n. Es m�s f�cil para investigar.

si, obtengo lo mismo que en la ventanita, pero la verdad, no se como interpretar esta informaci�n para encontrar los bloques no liberados !!

Heap dump by heaptrc unit
61555 memory blocks allocated : 11694004/11803264
61551 memory blocks freed : 11693708/11802960
4 unfreed memory blocks : 296
True heap size : 294912
True free heap : 294208
Should be : 294352
Call trace for block $0011D3A0 size 60
$0040EF4A
$00463211
$004633B3
$004756F9
$006ECB5E
$006ECB10
$006E910B
$0045AC95
Call trace for block $0019AB78 size 124
$0040BD26
$004751AF
$0047568B
$006ECB5E
$006ECB10
$006E910B
$0045AC95
$0045B255
Call trace for block $0011D4C0 size 64
$0040BD26
$0047780F
$006ECB4D
$006ECB10
$006E910B
$0045AC95
$0045B255
$00455397
Call trace for block $00123618 size 48
$0040BD26
$005FF10D
$006E907C
$0045AC95
$0045B255
$00455397
$004FE173
$0045AF26

Reply by email

Paola Bruccoleri
to Paola Bruccoleri

El 06/11/2010 04:42 p.m., Paola Bruccoleri escribi�:

si, obtengo lo mismo que en la ventanita, pero la verdad, no se como interpretar esta informaci�n para encontrar los bloques no liberados !!

le desmarqu� la opci�n de enlazado:

y ahora obtengo algo m�s coherente:
Heap dump by heaptrc unit
74191 memory blocks allocated : 12959218/13118192
74187 memory blocks freed : 12958922/13117888
4 unfreed memory blocks : 296
True heap size : 393216
True free heap : 392512
Should be : 392656
Call trace for block $0017D3A0 size 60
$0040EF6A REALLOCMEM, line 317 of C:/fpcsvn/rtl/inc/heap.inc $004628C1 TRAWIMAGE__CREATEDATA, line 1283 of graphtype.pp $00462A63 TRAWIMAGE__EXTRACTRECT, line 1437 of graphtype.pp $00474DA9 TRASTERIMAGE__ASSIGN, line 104 of ./include/rasterimage.inc $006EC20E LOADLAZRESBITMAPIMAGE, line 625 of vclutils.pas $006EC1C0 CREATEARROWBITMAP, line 611 of vclutils.pas $006E87BB TRXCUSTOMDBLOOKUPEDIT__CREATE, line 614 of rxlookup.pas $0045A345 TREADER__READCOMPONENT, line 875 of
C:/fpcsvn/rtl/objpas/classes/reader.inc
Call trace for block $001FAB78 size 124
$0040BD46 TOBJECT__NEWINSTANCE, line 345 of
C:/fpcsvn/rtl/inc/objpas.inc
$0047485F TSHAREDCUSTOMBITMAP__CREATE, line 20 of ./include/sharedcustombitmap.inc
$00474D3B TRASTERIMAGE__ASSIGN, line 96 of ./include/rasterimage.inc $006EC20E LOADLAZRESBITMAPIMAGE, line 625 of vclutils.pas $006EC1C0 CREATEARROWBITMAP, line 611 of vclutils.pas $006E87BB TRXCUSTOMDBLOOKUPEDIT__CREATE, line 614 of rxlookup.pas $0045A345 TREADER__READCOMPONENT, line 875 of
C:/fpcsvn/rtl/objpas/classes/reader.inc
$0045A905 TREADER__READDATA, line 976 of
C:/fpcsvn/rtl/objpas/classes/reader.inc
Call trace for block $0017D4C0 size 64
$0040BD46 TOBJECT__NEWINSTANCE, line 345 of
C:/fpcsvn/rtl/inc/objpas.inc
$00476EBF TCUSTOMBITMAP__CREATE, line 49 of ./include/custombitmap.inc $006EC1FD LOADLAZRESBITMAPIMAGE, line 624 of vclutils.pas $006EC1C0 CREATEARROWBITMAP, line 611 of vclutils.pas $006E87BB TRXCUSTOMDBLOOKUPEDIT__CREATE, line 614 of rxlookup.pas $0045A345 TREADER__READCOMPONENT, line 875 of
C:/fpcsvn/rtl/objpas/classes/reader.inc
$0045A905 TREADER__READDATA, line 976 of
C:/fpcsvn/rtl/objpas/classes/reader.inc
$00454A47 TCOMPONENT__READSTATE, line 317 of
C:/fpcsvn/rtl/objpas/classes/compon.inc
Call trace for block $00183618 size 48
$0040BD46 TOBJECT__NEWINSTANCE, line 345 of
C:/fpcsvn/rtl/inc/objpas.inc
$005FE7BD TDATALINK__CREATE, line 7 of datasource.inc $006E872C TRXCUSTOMDBLOOKUPEDIT__CREATE, line 606 of rxlookup.pas $0045A345 TREADER__READCOMPONENT, line 875 of
C:/fpcsvn/rtl/objpas/classes/reader.inc
$0045A905 TREADER__READDATA, line 976 of
C:/fpcsvn/rtl/objpas/classes/reader.inc
$00454A47 TCOMPONENT__READSTATE, line 317 of
C:/fpcsvn/rtl/objpas/classes/compon.inc
$004FD823 TCONTROL__READSTATE, line 3151 of ./include/control.inc $0045A5D6 TREADER__READCOMPONENT, line 927 of
C:/fpcsvn/rtl/objpas/classes/reader.inc

evidentemente el problema est� en un control rxlookupedit que uso para buscar.
Quiz�s sea un bug de las rx, porque ah� no hay ninguna menci�n a un pas m�o!!

chauuuuuuuu

Reply by email

José Mejuto
to Paola Bruccoleri

Hello Paola,

Saturday, November 6, 2010, 8:04:56 PM, you wrote:

PB> le desmarqu� la opci�n de enlazado:
[...]
PB> evidentemente el problema est� en un control rxlookupedit que uso para PB> buscar.
PB> Quiz�s sea un bug de las rx, porque ah� no hay ninguna menci�n a un pas PB> m�o!!

Efectivamente, parece un bug del rx.

Best regards, Jos�

Reply by email

Paola Bruccoleri
to José Mejuto

El 06/11/2010 05:28 p.m., Jos� Mejuto escribi�:

Show quoted text 13 lines
Hello Paola, Saturday, November 6, 2010, 8:04:56 PM, you wrote: PB> le desmarqu� la opci�n de enlazado: [...] PB> evidentemente el problema est� en un control rxlookupedit que uso para PB> buscar. PB> Quiz�s sea un bug de las rx, porque ah� no hay ninguna menci�n a un pas PB> m�o!! Efectivamente, parece un bug del rx.

ya estoy eliminando ese control y sustituy�ndolo por otro... con otros controles rx no me he dado cuenta que pase lo mismo (hasta ahora) qu� buena est� esa opci�n de generar ese log!!!... deber�a revisarse todo un sistema de esa manera para ver si quedan colgadas cosas por ah�!!!

Reply by email

Paola Bruccoleri
to José Mejuto: PB> le desmarqu� la opci�n de enlazado: [...] PB> evidentemente el problema est� en…

El 06/11/2010 05:28 p.m., Jos� Mejuto escribi�:

Show quoted text 13 lines
Hello Paola, Saturday, November 6, 2010, 8:04:56 PM, you wrote: PB> le desmarqu� la opci�n de enlazado: [...] PB> evidentemente el problema est� en un control rxlookupedit que uso para PB> buscar. PB> Quiz�s sea un bug de las rx, porque ah� no hay ninguna menci�n a un pas PB> m�o!! Efectivamente, parece un bug del rx.

ahh... tb les recomiendo a los dem�s, este art�culo de silvio, ya traducido a ingl�s, aunque est� en portugu�s:

http://translate.google.com.br/translate?js=y&prev=_t&hl=pt-BR&ie=UTF-8&layout=1&eotf=1&u=http://silvioprog.blogspot.com/2010/01/detectar-vazamentos-de-memoria-com.html&sl=pt&tl=en

Reply by email

Paola Bruccoleri
to José Mejuto: PB> le desmarqu� la opci�n de enlazado: [...] PB> evidentemente el problema est� en…

El 06/11/2010 05:28 p.m., Jos� Mejuto escribi�:

Show quoted text 13 lines
Hello Paola, Saturday, November 6, 2010, 8:04:56 PM, you wrote: PB> le desmarqu� la opci�n de enlazado: [...] PB> evidentemente el problema est� en un control rxlookupedit que uso para PB> buscar. PB> Quiz�s sea un bug de las rx, porque ah� no hay ninguna menci�n a un pas PB> m�o!! Efectivamente, parece un bug del rx.

tb me est� pasando con unos controles RxTimeEdit que us� para ingresar horas.
Ese componente me resulta muy pr�ctico a la hora de que el usuario ingrese muchos datos y r�pidamente, por eso me qued� con ese.

Ahora.... c�mo puedo liberar toda esa "mugre" que queda de ese control al salir del form?.. no tengo forma ahora de sustituir ese control por otro de igual practicidad..

muchas gracias nuevamente
chauuuuuuuu

Reply by email

José Mejuto
to Paola Bruccoleri

Hello Paola,

Saturday, November 6, 2010, 8:59:11 PM, you wrote:

PB> Ahora.... c�mo puedo liberar toda esa "mugre" que queda de ese control PB> al salir del form?.. no tengo forma ahora de sustituir ese control por PB> otro de igual practicidad..

Lo siento, no puedes :( Alguien tiene que corregir el componente, de todos modos es muy poca "mugre" por lo tanto no me preocupar�a. En tal caso por un bug report en el Lazarus CCR sobre los RX.

Best regards, Jos�

Reply by email

Paola Bruccoleri
to José Mejuto

El 06/11/2010 07:12 p.m., Jos� Mejuto escribi�:

Show quoted text 11 lines
Hello Paola, Saturday, November 6, 2010, 8:59:11 PM, you wrote: PB> Ahora.... c�mo puedo liberar toda esa "mugre" que queda de ese control PB> al salir del form?.. no tengo forma ahora de sustituir ese control por PB> otro de igual practicidad.. Lo siento, no puedes :( Alguien tiene que corregir el componente, de todos modos es muy poca "mugre" por lo tanto no me preocupar�a. En tal caso por un bug report en el Lazarus CCR sobre los RX.

ok, ya lo report�!!.
muchas gracias!

Reply by email