From 51f3ad78630bc425b527843eb4ea016cf0e00518 Mon Sep 17 00:00:00 2001 From: Milian Wolff Date: Sun, 22 Apr 2018 20:30:44 +0200 Subject: [PATCH] Initialize the start time on first use This ensures the data is properly initialized, the global static initialization may happen too late otherwise. --- src/track/libheaptrack.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/track/libheaptrack.cpp b/src/track/libheaptrack.cpp index 5c469a39..2a09af1b 100644 --- a/src/track/libheaptrack.cpp +++ b/src/track/libheaptrack.cpp @@ -60,10 +60,15 @@ using namespace std; namespace { using clock = chrono::steady_clock; -const chrono::time_point s_start = clock::now(); +chrono::time_point startTime() +{ + static const chrono::time_point s_start = clock::now(); + return s_start; +} + chrono::milliseconds elapsedTime() { - return chrono::duration_cast(clock::now() - s_start); + return chrono::duration_cast(clock::now() - startTime()); } __pid_t gettid() @@ -656,6 +661,8 @@ void heaptrack_init(const char* outputFileName, heaptrack_callback_t initBeforeC heaptrack_callback_initialized_t initAfterCallback, heaptrack_callback_t stopCallback) { RecursionGuard guard; + // initialize + startTime(); debugLog("heaptrack_init(%s)", outputFileName);