From f960b39061657eb0d06bd82b65078a0a3d7d896a Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Wed, 10 Jul 2013 17:15:00 +0200 Subject: [PATCH] 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. --- src/libstrongswan/utils/leak_detective.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/libstrongswan/utils/leak_detective.c b/src/libstrongswan/utils/leak_detective.c index aa2447260b..b2c644ae13 100644 --- a/src/libstrongswan/utils/leak_detective.c +++ b/src/libstrongswan/utils/leak_detective.c @@ -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); -- 2.47.2