[Lugge] Re: memory leak

  • From: "Roberto A. Foglietta" <me@xxxxxxxxxxxxxxxxxxxxxx>
  • To: lugge@xxxxxxxxxxxxx
  • Date: Wed, 03 Nov 2004 08:55:24 +0100

Zingus J. Rinkle wrote:

Roberto A. Foglietta wrote:

Ciao,

 sto lavorando su dillo il browser gtk/c. Purtroppo ho scoperto che ha
un memory leak e si perde 4Kb ad ogni reload. Vorrei usarlo come
visualizzatore di orari dei treni e degli autobus ma questo significa
che 10 istanze del programma con un reload ogni 5 secondi si consumano
circa ~30Mb all'ora. Definitivamente eccessivo.

 Dillo ha 42 mila righe di codice e non sono riuscito a trovare il bug.
 Avete idea di come fare un log di tutti i malloc/free che il programma
fa? Avete idea di qualche garbage collector in C che possa usare
all'interno di un progetto così complesso senza riscriverlo tutto?


A parte, l'ovvio "strace -e malloc,calloc,free" c'e` una serie di tool che overloadano o sostituiscono in qualche modo le calloc e le malloc di un programma con delle versioni che loggano duro l'occupazione di memoria (alcuni credo abbiano anche tool per rappresentare poi su di un grafico i dati). xmalloc ed electric fence i primi due nomi che mi vengono in mente. Mai provato ad usarli, pero`, principalmente perche` spesso richiedono di pasticciare col codice per incastrarceli (dunque tu provali e sappimi dire se funzano :-)

Ah, forse anche gprof ha delle opzioni per tracciare la memoria...


Grazie in ogni caso mi ero dimenticato di dire che usando le glibc sono g_malloc e g_free. Avevo provato ad usare strace e non ero riuscito ad individuare quelle syscall. Ci ho provato con le opzioni da te consigliate ma trovo questo:

[roberto@wsraf src]$ strace -e malloc,calloc,free ./dillo
strace: invalid system call `malloc'
[roberto@wsraf src]$ man strace
[roberto@wsraf src]$ strace -e malloc,calloc,free ./dillo
strace: invalid system call `malloc'
[roberto@wsraf src]$ strace -e calloc,free ./dillo
strace: invalid system call `calloc'
[roberto@wsraf src]$ strace -e free ./dillo
strace: invalid system call `free'

Confermo la validità di valgrind ma il suo output devo ancora capirlo e tradurlo in azioni concrete sul codice


Ciao,
--
Roberto A. Foglietta
http://www.roberto.foglietta.name
http://www.lugge.net
ICQ#: 108718257
========----------


Archivio delle e-mail postate in lista http://www.freelists.org/archives/lugge/

Prima di scrivere in m-list per favore leggi il regolamento http://www.lugge.net/index.php?mod=cosa_facciamo/gruppo_di_discussione
Modifica dell'account sulla lista LUGGe http://www.lugge.net/index.php?mod=cosa_facciamo/gruppo_di_discussione#list



Other related posts: