¿Como descubrir que programa tiene un memory leak?

Bueno, lo he comentado por el tema de gnome, desde la ultima actualización (aunque puede ser antes), tengo un memory leak bestial. Gnome siempre ha tenido problemas con esto, pero no tenia problemas porque no era nada significativo. Pero ahora la cosa es muy loca... hablamos de muchos gigas.
Ahora mismo, por ejemplo, después de un dia de trabajo con gedit, evince, terminal y chromium, he reiniciado gnome-shell, cerrando todos los programas y me marca un consumo de 5GiB. Eso es un memory leak importante, porque recien reiniciado el PC me consume solo 1 GiB o 2.

El problema es que no tengo ni idea de como detectar de donde proviene. Me huelo que puede ser gedit o evince, pero no descarto otras opciones.

Y aquí mi pregunta. ¿existe alguna forma de análisis para sacar esto? Programas, herramientas, no se.
Por curiosidad he mirado en el bug tracker de Gnome y de ahí he llegado a la herramienta Valgrind, quizá te sirva para descartar o no sospechosos.
Khin escribió:Por curiosidad he mirado en el bug tracker de Gnome y de ahí he llegado a la herramienta Valgrind, quizá te sirva para descartar o no sospechosos.

Venía a mencionarte dicha herramienta.

Pero valgrind está pensada para usarla mientras desarrollas la aplicación, no para buscar entre las miles de apps a ver cual es la que se está quedando «más pallá que pacá».
Bueno, mejor es nada... mirare a ver que tal.

EDIT: Provado con evince, que es uno de los sospechosos pero lo hace inusable el valgrind...
¿No estaremos confundiendo memory leak con uso de la RAM?. Los SSOO desde hace tiempo hacen mucho uso de la RAM para cachear, lo cual no significa que no esté libre en caso de ser reclamada por un proceso. Especialmente Linux hace un uso muy intensivo de la memoria libre, siempre será mejor usarla que no usarla, para acelerar teniendo cosas ya listas.
Si el swap no te llega a rascar, yo ni me preocuparía del asunto. Es un comportamiento normal del SO.
no se y no podrias abrir el gestor de procesos e ir viendo que aplicaciones te consumen más momoria así descubrí yo que aMule en mi distro tenía un memory-leak guapo guapo y ahora solo uso emule via wine
darksch escribió:¿No estaremos confundiendo memory leak con uso de la RAM?. Los SSOO desde hace tiempo hacen mucho uso de la RAM para cachear, lo cual no significa que no esté libre en caso de ser reclamada por un proceso. Especialmente Linux hace un uso muy intensivo de la memoria libre, siempre será mejor usarla que no usarla, para acelerar teniendo cosas ya listas.
Si el swap no te llega a rascar, yo ni me preocuparía del asunto. Es un comportamiento normal del SO.

La mierda de gnome shell tiene por diseño tendencia a consumir más y más RAM sin liberarla nunca.

Mi recomendación: Usa KDE.
-spyker- escribió:
darksch escribió:¿No estaremos confundiendo memory leak con uso de la RAM?. Los SSOO desde hace tiempo hacen mucho uso de la RAM para cachear, lo cual no significa que no esté libre en caso de ser reclamada por un proceso. Especialmente Linux hace un uso muy intensivo de la memoria libre, siempre será mejor usarla que no usarla, para acelerar teniendo cosas ya listas.
Si el swap no te llega a rascar, yo ni me preocuparía del asunto. Es un comportamiento normal del SO.

La mierda de gnome shell tiene por diseño tendencia a consumir más y más RAM sin liberarla nunca.

Mi recomendación: Usa KDE.

Tenía:
https://feaneron.com/2018/04/20/the-infamous-gnome-shell-memory-leak/
@lovechii5 ¿al final lo has solucionado?
darksch escribió:¿No estaremos confundiendo memory leak con uso de la RAM?. Los SSOO desde hace tiempo hacen mucho uso de la RAM para cachear, lo cual no significa que no esté libre en caso de ser reclamada por un proceso. Especialmente Linux hace un uso muy intensivo de la memoria libre, siempre será mejor usarla que no usarla, para acelerar teniendo cosas ya listas.
Si el swap no te llega a rascar, yo ni me preocuparía del asunto. Es un comportamiento normal del SO.

No. De hecho, se me ha llegado a bloquear el PC varias veces por falta de memoria (tengo un swap pequeño de 1GiB, solo por cosas raras como estas).

Puede que no me haya explicado bien. No estoy hablando en ningún momento de memoria que se usa para cache, es memoria usada. Pero, a demás, luego no aparece en la lista de programas, por ejemplo si haces un top o htop, la memoria usada (no cache) no corresponde a la suma de los programas que aparecen.
El caso más claro es el que he explicado antes. Luego de ver que la memoria había subido bastante, apague todos los programas y reinicie el gnome. El computo de memoria usada por los programas en la lista tenia una diferencia de 3 o 4 GiB con el valor que da el free. Vamos, un memory leak de caballo.

@bikooo2 Pues ayer estuve dandole fuerte al evince+gedit, junto con chromium, skype y zoom y no vi problema. Actualice el Arch hace poco, por eso.
@lovechii5 pues en tal caso sí parece el caso. Empezaría por el navegador, Chrome parece conocido por sus memory leaks.
https://www.experthoot.com/stop-chrome-memory-leak/
Nótese que el artículo es bastante reciente.

Prueba a usar Firefox un tiempo.
darksch escribió:@lovechii5 pues en tal caso sí parece el caso. Empezaría por el navegador, Chrome parece conocido por sus memory leaks.
https://www.experthoot.com/stop-chrome-memory-leak/
Nótese que el artículo es bastante reciente.

Prueba a usar Firefox un tiempo.

Pues, hace tiempo que quiero cambiar y la perreria me puede, a ver si asi me cambio, si.
lovechii5 escribió:
darksch escribió:¿No estaremos confundiendo memory leak con uso de la RAM?. Los SSOO desde hace tiempo hacen mucho uso de la RAM para cachear, lo cual no significa que no esté libre en caso de ser reclamada por un proceso. Especialmente Linux hace un uso muy intensivo de la memoria libre, siempre será mejor usarla que no usarla, para acelerar teniendo cosas ya listas.
Si el swap no te llega a rascar, yo ni me preocuparía del asunto. Es un comportamiento normal del SO.

No. De hecho, se me ha llegado a bloquear el PC varias veces por falta de memoria (tengo un swap pequeño de 1GiB, solo por cosas raras como estas).

Puede que no me haya explicado bien. No estoy hablando en ningún momento de memoria que se usa para cache, es memoria usada. Pero, a demás, luego no aparece en la lista de programas, por ejemplo si haces un top o htop, la memoria usada (no cache) no corresponde a la suma de los programas que aparecen.
El caso más claro es el que he explicado antes. Luego de ver que la memoria había subido bastante, apague todos los programas y reinicie el gnome. El computo de memoria usada por los programas en la lista tenia una diferencia de 3 o 4 GiB con el valor que da el free. Vamos, un memory leak de caballo.

@bikooo2 Pues ayer estuve dandole fuerte al evince+gedit, junto con chromium, skype y zoom y no vi problema. Actualice el Arch hace poco, por eso.


Para evitar los bloqueos, prueba a instalar earlyoom. Y si llegas al bloqueo, prueba con SysRq+f a ver si te libera la memoria suficiente para volver a tener el ordenador operativo.
lovechii5 escribió:Ahora mismo, por ejemplo, después de un dia de trabajo con gedit, evince, terminal y chromium, he reiniciado gnome-shell, cerrando todos los programas y me marca un consumo de 5GiB. Eso es un memory leak importante, porque recien reiniciado el PC me consume solo 1 GiB o 2.


Si un proceso tiene un memory leak, esa memoria, por muy "fugada" que esté, sigue asignada a ese proceso, por lo que cualquier monitor de procesos (top, htop, gnome-system-monitor, ksysguard, etc) la mostrará como parte del proceso en cuestión.

Por otro lado, cuando un proceso termina, su memoria (aunque sean 55 TB de memory leak) se libera y vuelve a estar disponible (tanto si vuelve a contarse como libre, como si se cuenta como cacheada).

Dicho esto, y viendo lo que dices en lo que he citado, no creo que ninguno de esos programas sean el causante, a no ser que alguno de ellos mantenga un proceso en segundo plano independiente de la interfaz gráfica.

Quizá algun programa lanza mas de un proceso (por ejemplo, como hace chrome con cada pestaña), que por separado no te llaman la atención, pero al sumarlo todo tienes tu culpable.
jorchube escribió:
lovechii5 escribió:Ahora mismo, por ejemplo, después de un dia de trabajo con gedit, evince, terminal y chromium, he reiniciado gnome-shell, cerrando todos los programas y me marca un consumo de 5GiB. Eso es un memory leak importante, porque recien reiniciado el PC me consume solo 1 GiB o 2.


Si un proceso tiene un memory leak, esa memoria, por muy "fugada" que esté, sigue asignada a ese proceso, por lo que cualquier monitor de procesos (top, htop, gnome-system-monitor, ksysguard, etc) la mostrará como parte del proceso en cuestión.

Por otro lado, cuando un proceso termina, su memoria (aunque sean 55 TB de memory leak) se libera y vuelve a estar disponible (tanto si vuelve a contarse como libre, como si se cuenta como cacheada).

Dicho esto, y viendo lo que dices en lo que he citado, no creo que ninguno de esos programas sean el causante, a no ser que alguno de ellos mantenga un proceso en segundo plano independiente de la interfaz gráfica.

Quizá algun programa lanza mas de un proceso (por ejemplo, como hace chrome con cada pestaña), que por separado no te llaman la atención, pero al sumarlo todo tienes tu culpable.

Puedo equivocarme, pero no es lo que yo tenia entendido por memory leak.

Igualmente, cuando hacia una htop no me salia ningún programa con un consumo excesivo. En el ejemplo que has citado, había reiniciado el wayland, todos los programas se deberían haber cerrado aunque no los cerrara, pero la memoria total consumida superaba los 5 GiB, cuando por defecto me consume un poco mas de un 1GB.
Eso puede que fuera en sistemas directos (tipo DOS), en sistemas de memoria virtualizada es el propio SO quien asigna memoria a los procesos, y como dice @jorchube en estos sistemas si el proceso deja de existir, esa memoria reservada por el proceso se recupera.
Es muy posible que esos programas crecientes dejen algún proceso perdido, y de ahí que no se libere la memoria. A veces puede ser alguno dependiente de otro al cual se le inyecten más y más datos y luego no se liberen, y al ser un proceso que no se cierre, ahí se queda ya perdido, con la única posibilidad de reiniciar el proceso afectado.

También ayudaría saber la distro, si el kernel es compilado o instalado normal, etc.

Edit: podría incluso ser un driver, que ahí ya poco que hacer.
cmhacks escribió:@lovechii5 Buenas! https://www.kernel.org/doc/html/latest/ ... mleak.html Esto te va a quitar dolores de cabeza. Saludos.

ostia, gracias.

Por suerte ahora hace unas semanas que no pasa nada. Pero si vuelve, le metere.
@lovechii5 De nada compi, para eso estamos! [beer]
18 respuestas