leak-detective: take a copy of backtrace while printing traces

As we don't want to hold the lock, we must make sure backtraces keep valid
while printing them.
This commit is contained in:
Martin Willi
2013-07-10 17:28:24 +02:00
parent d9c459e855
commit f960b39061
+3 -2
View File
@@ -637,11 +637,11 @@ static int print_traces(private_leak_detective_t *this,
else
{
INIT(entry,
.backtrace = hdr->backtrace,
.backtrace = hdr->backtrace->clone(hdr->backtrace),
.bytes = hdr->bytes,
.count = 1,
);
entries->put(entries, hdr->backtrace, entry);
entries->put(entries, entry->backtrace, entry);
}
leaks++;
}
@@ -655,6 +655,7 @@ static int print_traces(private_leak_detective_t *this,
entry->bytes, entry->count, entry->bytes / entry->count);
entry->backtrace->log(entry->backtrace, out, detailed);
}
entry->backtrace->destroy(entry->backtrace);
free(entry);
}
enumerator->destroy(enumerator);