GLIBC: Debuggen von Speicherverlusten: so interpretieren Sie die Ausgabe von mtrace()

Ich versuche zu Debuggen, die einen memory-leak problem. Ich bin mit mtrace() um ein malloc/free/realloc Spur. Ich habe meinem prog und habe nun eine riesige log-Datei. So weit So gut. Aber ich habe Probleme mit der Interpretation der Datei. Blick auf diese Zeilen:

@ /usr/java/ibm-java2-x86_64-50/jre/bin/libj9prt23.so:[0x2b270a384a34] + 0x1502570 0x68
@ /usr/java/ibm-java2-x86_64-50/jre/bin/libj9prt23.so:[0x2b270a384a34] + 0x1502620 0x30
@ /usr/java/ibm-java2-x86_64-50/jre/bin/libj9prt23.so:[0x2b270a384a34] + 0x2aaab43a1700 0xa80
@ /usr/java/ibm-java2-x86_64-50/jre/bin/libj9prt23.so:[0x2b270a384a34] + 0x1501460 0xa64

Das seltsame daran ist, dass ein Anruf (gleiche Adresse zurück) ist verantwortlich für 4 Zuweisungen.

Sogar noch seltsamer:

@ /usr/java/ibm-java2-x86_64-50/jre/bin/libj9prt23.so:[0x2b270a384a34] + 0x2aaab43a1700 0xa2c

@ /usr/java/ibm-java2-x86_64-50/jre/bin/libj9prt23.so:[0x2b270a384a34] + 0x2aaab43a1700 0xa80

Zwischen diesen beiden Linien der block 0x2aaab43a1700 ist nie freigegeben wird.

Weiß jemand, wie dies zu erklären? Wie könnte man das Ergebnis in 4 Zuweisungen? Und wie könnte malloc Rückkehr eine Adresse bereits zugewiesen zuvor?

Bearbeiten 2008/09/30:
Das Skript zu analysieren, die mtrace () - Ausgabe zur Verfügung gestellt von der GLIBC (mtrace.pl) ist nicht von jedem hier helfen. Es wird nur sagen: Alloc 0x2aaab43a1700 doppelte. Aber wie konnte das passieren?

InformationsquelleAutor Eduard Wirch | 2008-09-30
Schreibe einen Kommentar