If trace is enabled after the last TRACE() statement is run, but *before* ~Trace() is called, then _file is left as nullptr when logtrace_output() is called in ~Trace(). This will segfault. --- src/base/logtrace.h | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/src/base/logtrace.h b/src/base/logtrace.h index 9b20da82d..69379766e 100644 --- a/src/base/logtrace.h +++ b/src/base/logtrace.h @@ -175,7 +175,11 @@ extern void log_output(const char *file, unsigned line, unsigned priority, class Trace { public: - Trace() {} + Trace() = delete; + Trace(const char *file, const char *function) { + file_ = file; + function_ = function; + } ~Trace() { if (!trace_leave_called && is_logtrace_enabled(CAT_TRACE_LEAVE)) { va_list ap{}; @@ -212,11 +216,11 @@ class Trace { }; #define TRACE_ENTER() \ - Trace t_; \ + Trace t_(__FILE__, __FUNCTION__); \ t_.trace(__FILE__, __FUNCTION__, __LINE__, CAT_TRACE_ENTER, "%s ", \ __FUNCTION__) #define TRACE_ENTER2(format, args...) \ - Trace t_; \ + Trace t_(__FILE__, __FUNCTION__); \ t_.trace(__FILE__, __FUNCTION__, __LINE__, CAT_TRACE_ENTER, "%s: " format, \ __FUNCTION__, ##args) -- 2.14.1 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel