FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Memory Leak - Richedit
Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Memory Leak - Richedit
Posted: Wed Feb 24, 2021 10:07 PM
Hola,

Estaba probando este ejecutable https://github.com/FiveTechSoft/FWH_tools/blob/master/pim.zip y veo que si en el control de edicion que creo que es un richedit, pego una imagen hay una fuga de memoria.
Realmente para mi no tiene demasiada importancia. Pero por si fuera de interés para alguien

Saludos
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Memory Leak - Richedit
Posted: Wed Feb 24, 2021 10:55 PM

Cómo has detectado la fuga que comentas?
Lo digo para usar los mismos criterios y herramientas

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: Memory Leak - Richedit
Posted: Thu Feb 25, 2021 08:00 AM

Hola Cristóbal,

Con el administrador de tareas, en la columna de objetos GDI

Salu2

Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Memory Leak - Richedit
Posted: Thu Feb 25, 2021 08:44 AM

Muy buenas señor
Lo imaginaba pero quería asegurarme
Gracias

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: Memory Leak - Richedit
Posted: Thu Feb 25, 2021 10:16 AM

Nunca he usado el valgrind. No sé como se utilizaria.

El Process Explorer no aporta mucho en el tema GDI (o eso creo)
El Task Manager de luxe tampoco... Quizá las versiones más modernas.. no sé..

¿ Utilizas tu algún inspector para detectar las fugas de memoria ?

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Memory Leak - Richedit
Posted: Thu Feb 25, 2021 11:59 AM
Paco,

Has probado a usar el propio detector de pérdida de recursos que incorpora FWH ?

http://wiki.fivetechsoft.com/doku.php?id=fivewin_function_setresdebug
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: Memory Leak - Richedit
Posted: Thu Feb 25, 2021 12:26 PM

Hola Antonio,

No lo he probado... pero sospecho que para el caso del enunciado no serviria...
Los objetos richedit si son eliminados pero no los recursos que consumieron con las imagenes....
Pero ciertamente no sé bien qué está pasando... Pero ciertamente el ejemplo si tiene una fuga por la cañería :D y es más grande cuanto más grande es la imagen que se le pega

Salu2

Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Memory Leak - Richedit
Posted: Fri Feb 26, 2021 11:14 AM

Paco,

El propio sistema de FWH también debería detectar la no liberación de esas imágenes y reportarlas

Te ruego que lo pruebes usándo esas funciones propias de FWH y nos comentes el resultado

Gracias

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 476
Joined: Sat Feb 03, 2007 06:36 AM
Re: Memory Leak - Richedit
Posted: Fri Feb 26, 2021 12:16 PM
Antonio, he hecho la SetResDebug() en una aplicación que desarrolle para un cliente donde incorporo unas imágenes y las mismas las pueden modificar y luego guardarlas en una tabla de MySQL
Como desconozco como interpretar los resultados de SetResDebug(), copio el mismo acá para que me puedas indicar si estoy teniendo problemas con la liberación de estas imágenes:
Code (fw): Select all Collapse
26-02-2021 06:05:06: C:\appsis\dev\sisgen.exe -- BRUSH,-1139798402,TCONTROL:SETCOLOR(2770)->TBTNBMP:SETCOLOR(2084)->TBTNBMP:NEWBAR(579)->FUNSISMAIN:ACTIVAR(1224)->MAIN(102)
26-02-2021 06:05:06: C:\appsis\dev\sisgen.exe -- BMP,1040519000,TBITMAP:LOADIMAGE(826)->TBITMAP:DEFINE(282)->FICHACLINICA(8630)->(b)CLIE01(981)->TBTNBMP:CLICK(704)->TBTNBMP:LBUTTONUP(990)->TCONTROL:HANDLEEVENT(1791)->TBTNBMP:HANDLEEVENT(2030)->_FWH(3559)->DIALOGBOX(0)->TDIALOG:ACTIVATE(304)->CLIE01(1339)->(b)CLIECONS(4624)->TWINDOW:LDBLCLICK(2092)->TCONTROL:LDBLCLICK(1814)->TWBROWSE:LDBLCLICK(1229)->TWINDOW:HANDLEEVENT(0)->TWBROWSE:HANDLEEVENT(1801)->_FWH(3559)->WINRUN(0)->TMDIFRAME:ACTIVATE(1097)->FUNSISMAIN:ACTIVAR(1471)->MAIN(102)
26-02-2021 06:05:06: C:\appsis\dev\sisgen.exe -- BMP,402984832,TBITMAP:LOADIMAGE(826)->TBITMAP:DEFINE(282)->FICHACLINICA(8631)->(b)CLIE01(981)->TBTNBMP:CLICK(704)->TBTNBMP:LBUTTONUP(990)->TCONTROL:HANDLEEVENT(1791)->TBTNBMP:HANDLEEVENT(2030)->_FWH(3559)->DIALOGBOX(0)->TDIALOG:ACTIVATE(304)->CLIE01(1339)->(b)CLIECONS(4624)->TWINDOW:LDBLCLICK(2092)->TCONTROL:LDBLCLICK(1814)->TWBROWSE:LDBLCLICK(1229)->TWINDOW:HANDLEEVENT(0)->TWBROWSE:HANDLEEVENT(1801)->_FWH(3559)->WINRUN(0)->TMDIFRAME:ACTIVATE(1097)->FUNSISMAIN:ACTIVAR(1471)->MAIN(102)
26-02-2021 06:05:06: C:\appsis\dev\sisgen.exe -- BMP,-804974665,TXIMAGE:COPYTOCLIPBOARD(914)->(b)HOJAGRAFICA(9530)->(b)TWINDOW(726)->TWINDOW:LVALID(0)->(b)TWINDOW(366)->TWINDOW:END(0)->TWINDOW:SYSCOMMAND(2610)->TWINDOW:HANDLEEVENT(0)->_FWH(3559)->DIALOGBOX(0)->TDIALOG:ACTIVATE(304)->BITACORAMEDICA(9023)->(b)FICHACLINICA(8809)->TBUTTON:CLICK(179)->TBUTTON:HANDLEEVENT(1755)->_FWH(3559)->SENDMESSAGE(0)->TDIALOG:COMMAND(433)->TWINDOW:HANDLEEVENT(0)->TDIALOG:HANDLEEVENT(1136)->_FWH(3559)->DIALOGBOX(0)->TDIALOG:ACTIVATE(304)->FICHACLINICA(8817)->(b)CLIE01(981)->TBTNBMP:CLICK(704)->TBTNBMP:LBUTTONUP(990)->TCONTROL:HANDLEEVENT(1791)->TBTNBMP:HANDLEEVENT(2030)->_FWH(3559)->DIALOGBOX(0)->TDIALOG:ACTIVATE(304)->CLIE01(1339)->(b)CLIECONS(4624)->TWINDOW:LDBLCLICK(2092)->TCONTROL:LDBLCLICK(1814)->TWBROWSE:LDBLCLICK(1229)->TWINDOW:HANDLEEVENT(0)->TWBROWSE:HANDLEEVENT(1801)->_FWH(3559)->WINRUN(0)->TMDIFRAME:ACTIVATE(1097)->FUNSISMAIN:ACTIVAR(1471)->MAIN(102)
26-02-2021 06:05:06: C:\appsis\dev\sisgen.exe -- BMP,151326670,TIMAGE:LOADFROMCLIPBOARD(445)->GUARDARGRAFICACLINICA(9575)->(b)HOJAGRAFICA(9530)->(b)TWINDOW(726)->TWINDOW:LVALID(0)->(b)TWINDOW(366)->TWINDOW:END(0)->TWINDOW:SYSCOMMAND(2610)->TWINDOW:HANDLEEVENT(0)->_FWH(3559)->DIALOGBOX(0)->TDIALOG:ACTIVATE(304)->BITACORAMEDICA(9023)->(b)FICHACLINICA(8809)->TBUTTON:CLICK(179)->TBUTTON:HANDLEEVENT(1755)->_FWH(3559)->SENDMESSAGE(0)->TDIALOG:COMMAND(433)->TWINDOW:HANDLEEVENT(0)->TDIALOG:HANDLEEVENT(1136)->_FWH(3559)->DIALOGBOX(0)->TDIALOG:ACTIVATE(304)->FICHACLINICA(8817)->(b)CLIE01(981)->TBTNBMP:CLICK(704)->TBTNBMP:LBUTTONUP(990)->TCONTROL:HANDLEEVENT(1791)->TBTNBMP:HANDLEEVENT(2030)->_FWH(3559)->DIALOGBOX(0)->TDIALOG:ACTIVATE(304)->CLIE01(1339)->(b)CLIECONS(4624)->TWINDOW:LDBLCLICK(2092)->TCONTROL:LDBLCLICK(1814)->TWBROWSE:LDBLCLICK(1229)->TWINDOW:HANDLEEVENT(0)->TWBROWSE:HANDLEEVENT(1801)->_FWH(3559)->WINRUN(0)->TMDIFRAME:ACTIVATE(1097)->FUNSISMAIN:ACTIVAR(1471)->MAIN(102)
26-02-2021 06:05:06: C:\appsis\dev\sisgen.exe -- BMP,1174736808,TBITMAP:LOADIMAGE(826)->TBITMAP:DEFINE(282)->FICHACLINICA(8630)->(b)CLIE01(981)->TBTNBMP:CLICK(704)->TBTNBMP:LBUTTONUP(990)->TCONTROL:HANDLEEVENT(1791)->TBTNBMP:HANDLEEVENT(2030)->_FWH(3559)->DIALOGBOX(0)->TDIALOG:ACTIVATE(304)->CLIE01(1339)->(b)CLIECONS(4624)->TWINDOW:LDBLCLICK(2092)->TCONTROL:LDBLCLICK(1814)->TWBROWSE:LDBLCLICK(1229)->TWINDOW:HANDLEEVENT(0)->TWBROWSE:HANDLEEVENT(1801)->_FWH(3559)->WINRUN(0)->TMDIFRAME:ACTIVATE(1097)->FUNSISMAIN:ACTIVAR(1471)->MAIN(102)
26-02-2021 06:05:06: C:\appsis\dev\sisgen.exe -- BMP,1761939236,TBITMAP:LOADIMAGE(826)->TBITMAP:DEFINE(282)->FICHACLINICA(8631)->(b)CLIE01(981)->TBTNBMP:CLICK(704)->TBTNBMP:LBUTTONUP(990)->TCONTROL:HANDLEEVENT(1791)->TBTNBMP:HANDLEEVENT(2030)->_FWH(3559)->DIALOGBOX(0)->TDIALOG:ACTIVATE(304)->CLIE01(1339)->(b)CLIECONS(4624)->TWINDOW:LDBLCLICK(2092)->TCONTROL:LDBLCLICK(1814)->TWBROWSE:LDBLCLICK(1229)->TWINDOW:HANDLEEVENT(0)->TWBROWSE:HANDLEEVENT(1801)->_FWH(3559)->WINRUN(0)->TMDIFRAME:ACTIVATE(1097)->FUNSISMAIN:ACTIVAR(1471)->MAIN(102)
26-02-2021 06:05:06: C:\appsis\dev\sisgen.exe -- BMP,-1459286073,TXIMAGE:COPYTOCLIPBOARD(914)->(b)HOJAGRAFICA(9530)->(b)TWINDOW(726)->TWINDOW:LVALID(0)->(b)TWINDOW(366)->TWINDOW:END(0)->TWINDOW:SYSCOMMAND(2610)->TWINDOW:HANDLEEVENT(0)->_FWH(3559)->DIALOGBOX(0)->TDIALOG:ACTIVATE(304)->BITACORAMEDICA(9023)->(b)FICHACLINICA(8809)->TBUTTON:CLICK(179)->TBUTTON:HANDLEEVENT(1755)->_FWH(3559)->SENDMESSAGE(0)->TDIALOG:COMMAND(433)->TWINDOW:HANDLEEVENT(0)->TDIALOG:HANDLEEVENT(1136)->_FWH(3559)->DIALOGBOX(0)->TDIALOG:ACTIVATE(304)->FICHACLINICA(8817)->(b)CLIE01(981)->TBTNBMP:CLICK(704)->TBTNBMP:LBUTTONUP(990)->TCONTROL:HANDLEEVENT(1791)->TBTNBMP:HANDLEEVENT(2030)->_FWH(3559)->DIALOGBOX(0)->TDIALOG:ACTIVATE(304)->CLIE01(1339)->(b)CLIECONS(4624)->TWINDOW:LDBLCLICK(2092)->TCONTROL:LDBLCLICK(1814)->TWBROWSE:LDBLCLICK(1229)->TWINDOW:HANDLEEVENT(0)->TWBROWSE:HANDLEEVENT(1801)->_FWH(3559)->WINRUN(0)->TMDIFRAME:ACTIVATE(1097)->FUNSISMAIN:ACTIVAR(1471)->MAIN(102)
26-02-2021 06:05:06: C:\appsis\dev\sisgen.exe -- BMP,755306396,TIMAGE:LOADFROMCLIPBOARD(445)->GUARDARGRAFICACLINICA(9575)->(b)HOJAGRAFICA(9530)->(b)TWINDOW(726)->TWINDOW:LVALID(0)->(b)TWINDOW(366)->TWINDOW:END(0)->TWINDOW:SYSCOMMAND(2610)->TWINDOW:HANDLEEVENT(0)->_FWH(3559)->DIALOGBOX(0)->TDIALOG:ACTIVATE(304)->BITACORAMEDICA(9023)->(b)FICHACLINICA(8809)->TBUTTON:CLICK(179)->TBUTTON:HANDLEEVENT(1755)->_FWH(3559)->SENDMESSAGE(0)->TDIALOG:COMMAND(433)->TWINDOW:HANDLEEVENT(0)->TDIALOG:HANDLEEVENT(1136)->_FWH(3559)->DIALOGBOX(0)->TDIALOG:ACTIVATE(304)->FICHACLINICA(8817)->(b)CLIE01(981)->TBTNBMP:CLICK(704)->TBTNBMP:LBUTTONUP(990)->TCONTROL:HANDLEEVENT(1791)->TBTNBMP:HANDLEEVENT(2030)->_FWH(3559)->DIALOGBOX(0)->TDIALOG:ACTIVATE(304)->CLIE01(1339)->(b)CLIECONS(4624)->TWINDOW:LDBLCLICK(2092)->TCONTROL:LDBLCLICK(1814)->TWBROWSE:LDBLCLICK(1229)->TWINDOW:HANDLEEVENT(0)->TWBROWSE:HANDLEEVENT(1801)->_FWH(3559)->WINRUN(0)->TMDIFRAME:ACTIVATE(1097)->FUNSISMAIN:ACTIVAR(1471)->MAIN(102)
26-02-2021 06:05:06: C:\appsis\dev\sisgen.exe -- BMP,-1291514171,TBITMAP:LOADIMAGE(826)->TBITMAP:DEFINE(282)->FICHACLINICA(8630)->(b)CLIE01(981)->TBTNBMP:CLICK(704)->TBTNBMP:LBUTTONUP(990)->TCONTROL:HANDLEEVENT(1791)->TBTNBMP:HANDLEEVENT(2030)->_FWH(3559)->DIALOGBOX(0)->TDIALOG:ACTIVATE(304)->CLIE01(1339)->(b)CLIECONS(4624)->TWINDOW:LDBLCLICK(2092)->TCONTROL:LDBLCLICK(1814)->TWBROWSE:LDBLCLICK(1229)->TWINDOW:HANDLEEVENT(0)->TWBROWSE:HANDLEEVENT(1801)->_FWH(3559)->WINRUN(0)->TMDIFRAME:ACTIVATE(1097)->FUNSISMAIN:ACTIVAR(1471)->MAIN(102)
26-02-2021 06:05:06: C:\appsis\dev\sisgen.exe -- BMP,-1912270878,TBITMAP:LOADIMAGE(826)->TBITMAP:DEFINE(282)->FICHACLINICA(8631)->(b)CLIE01(981)->TBTNBMP:CLICK(704)->TBTNBMP:LBUTTONUP(990)->TCONTROL:HANDLEEVENT(1791)->TBTNBMP:HANDLEEVENT(2030)->_FWH(3559)->DIALOGBOX(0)->TDIALOG:ACTIVATE(304)->CLIE01(1339)->(b)CLIECONS(4624)->TWINDOW:LDBLCLICK(2092)->TCONTROL:LDBLCLICK(1814)->TWBROWSE:LDBLCLICK(1229)->TWINDOW:HANDLEEVENT(0)->TWBROWSE:HANDLEEVENT(1801)->_FWH(3559)->WINRUN(0)->TMDIFRAME:ACTIVATE(1097)->FUNSISMAIN:ACTIVAR(1471)->MAIN(102)
26-02-2021 06:05:06: C:\appsis\dev\sisgen.exe -- BRUSH,-2096099950,AYUDACINV(5229)->(b)REPINVEN01(84)->TWINDOW:LBUTTONDOWN(2067)->TBITMAP:LBUTTONDOWN(607)->TCONTROL:HANDLEEVENT(1788)->TBITMAP:HANDLEEVENT(577)->_FWH(3559)->DIALOGBOX(0)->TDIALOG:ACTIVATE(304)->REPINVEN01(362)->(b)MENUMAIN(3181)->TMENU:COMMAND(1552)->TWINDOW:COMMAND(1141)->TMDIFRAME:COMMAND(272)->TMDIFRAME:HANDLEEVENT(0)->_FWH(3559)->WINRUN(0)->TMDIFRAME:ACTIVATE(1097)->FUNSISMAIN:ACTIVAR(1471)->MAIN(102)
26-02-2021 06:05:06: C:\appsis\dev\sisgen.exe -- ====================================================================================================


* Corte el contenido porque tiene mas líneas.

Si estoy teniendo problemas con liberación de estas imágenes de la memoria, como se corrige el problema?

Saludos cordiales

Carlos
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Memory Leak - Richedit
Posted: Fri Feb 26, 2021 12:49 PM

Carlos,

Hay 10 bitmaps no liberados. Busca por "BMP," y verás desde donde se ha creado cada uno de ellos

Que control contiene a esos bitmaps ? es una barra de botones ? Puedes mostrar una imagen ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 476
Joined: Sat Feb 03, 2007 06:36 AM
Re: Memory Leak - Richedit
Posted: Fri Feb 26, 2021 02:56 PM
Antonio, gracias por responder.
Estoy utilizando un control xImage en una ventana:
Code (fw): Select all Collapse
@ oWnd:oBar:nHeight, 250 XIMAGE oImage SIZE oWnd:nWidth -30, -oWnd:oMsgBar:nHeight




Luego, según las modificaciones que hagan a la imagen, la copio al portatapeles -> oImage:CopyToClipBoard( .T. )
Par luego guardarla a disco:
Code (fw): Select all Collapse
oImage2:LoadFromClipboard()
oImage2:SaveImage( cImage, 2, 100 )


Creo que el problema esta en que las estoy guardando al portapapeles?

Saludos cordiales

Carlos
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Memory Leak - Richedit
Posted: Sat Feb 27, 2021 11:46 AM
I think this is what you are doing:
oImage is TXImage control.
You are copying the image as viewed from oImage to Clipboard.
Paste the image to oImage2, which is a TImage control.
Then saving the image using oImage2:SaveImage(...)

All this is not necessary.
We do not require the second TImage control oImage2 and also we need not use Clipboard at all.

When you want to save, just call
Code (fw): Select all Collapse
oImage:Save( .t., "name.png" )


Note: Last parameter nQuality is required only for jpg files.

Is there any problem saving this way?
Regards



G. N. Rao.

Hyderabad, India
Posts: 476
Joined: Sat Feb 03, 2007 06:36 AM
Re: Memory Leak - Richedit
Posted: Sat Feb 27, 2021 09:07 PM
Hola Rao, gracias por contestarme.
Si, yo ya había utilizado la opción que me indicas del control xImage:
Code (fw): Select all Collapse
oImage:Save( .t., cImage )

Pero no funciona, no guarda la imagen.
Solo me funciona, copiando al portapales y utilizar el control Image, para guardar la imagen.

Saludos cordiales.

Carlos.
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Memory Leak - Richedit
Posted: Sun Feb 28, 2021 04:13 AM
1) Please try and let us know if this works.
Code (fw): Select all Collapse
oImage:CopyToClipBoard( .t. )
FW_SaveImage( nil, cFileName )


2) We would like to check again why oImage:Save( .t., cImage ) is not working.

3) I very much liked your program. If you do not mind sharing your full program with me, I would like to test and improve TXImage class to save the changes properly.
My email is:
nageswaragunupudi [at] gmail [dot] com.

Thank you.
Regards



G. N. Rao.

Hyderabad, India
Posts: 476
Joined: Sat Feb 03, 2007 06:36 AM
Re: Memory Leak - Richedit
Posted: Tue Mar 02, 2021 05:25 PM

Hola Rao.
Disculpándome por el atraso en contestar, tuve que salir de viaje.
Te contesto a cada punto que me escribieras:

1) No funciona la opción FW_SaveImage( nil, cFileName ), no guarda la imagen.

2) Gracias por el apoyo.

3) Ya te envié por correo el programa para que puedas ver como lo estoy haciendo actualmente. (Si alguien mas quiere tener este programa que me envíe su correo y se lo envío. ) ** NOTA: Este trabajo de dibujar sobre una imagen es idea de Uwe, yo solo lo adapte.

Saludos cordiales.

Carlos.