Memory Leak - Richedit

Memory Leak - Richedit

Postby hmpaquito » 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
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Memory Leak - Richedit

Postby cnavarro » 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
User avatar
cnavarro
 
Posts: 6549
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Memory Leak - Richedit

Postby hmpaquito » Thu Feb 25, 2021 8:00 am

Hola Cristóbal,

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

Salu2
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Memory Leak - Richedit

Postby cnavarro » Thu Feb 25, 2021 8: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
User avatar
cnavarro
 
Posts: 6549
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Memory Leak - Richedit

Postby hmpaquito » 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 ?
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Memory Leak - Richedit

Postby Antonio Linares » 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
User avatar
Antonio Linares
Site Admin
 
Posts: 42117
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Memory Leak - Richedit

Postby hmpaquito » 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
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Memory Leak - Richedit

Postby Antonio Linares » 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
User avatar
Antonio Linares
Site Admin
 
Posts: 42117
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Memory Leak - Richedit

Postby csincuir » 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: Select all  Expand view  RUN
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
csincuir
 
Posts: 408
Joined: Sat Feb 03, 2007 6:36 am
Location: Guatemala

Re: Memory Leak - Richedit

Postby Antonio Linares » 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
User avatar
Antonio Linares
Site Admin
 
Posts: 42117
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Memory Leak - Richedit

Postby csincuir » Fri Feb 26, 2021 2:56 pm

Antonio, gracias por responder.
Estoy utilizando un control xImage en una ventana:
Code: Select all  Expand view  RUN

@ oWnd:oBar:nHeight, 250 XIMAGE oImage SIZE oWnd:nWidth -30, -oWnd:oMsgBar:nHeight
 


Image

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


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

Saludos cordiales

Carlos
csincuir
 
Posts: 408
Joined: Sat Feb 03, 2007 6:36 am
Location: Guatemala

Re: Memory Leak - Richedit

Postby nageswaragunupudi » 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: Select all  Expand view  RUN

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
User avatar
nageswaragunupudi
 
Posts: 10646
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Memory Leak - Richedit

Postby csincuir » Sat Feb 27, 2021 9:07 pm

Hola Rao, gracias por contestarme.
Si, yo ya había utilizado la opción que me indicas del control xImage:
Code: Select all  Expand view  RUN
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.
csincuir
 
Posts: 408
Joined: Sat Feb 03, 2007 6:36 am
Location: Guatemala

Re: Memory Leak - Richedit

Postby nageswaragunupudi » Sun Feb 28, 2021 4:13 am

1) Please try and let us know if this works.
Code: Select all  Expand view  RUN
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
User avatar
nageswaragunupudi
 
Posts: 10646
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Memory Leak - Richedit

Postby csincuir » Tue Mar 02, 2021 5: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.
csincuir
 
Posts: 408
Joined: Sat Feb 03, 2007 6:36 am
Location: Guatemala

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 49 guests