Skip to content

Commit

Permalink
Merge pull request #2610 from bjovke/my_work_2
Browse files Browse the repository at this point in the history
Problem: When using print_backtrace() on Linux with libunwind, printout of stack traces from multiple threads are interleaved. Solution: added static mutex to serialize printing of stack traces.
  • Loading branch information
bluca authored Jun 27, 2017
2 parents 33038da + 9ef34ad commit 35cd024
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion src/err.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -389,9 +389,12 @@ int zmq::wsa_error_to_errno (int errcode)
#include <libunwind.h>
#include <dlfcn.h>
#include <cxxabi.h>
#include "mutex.hpp"

void zmq::print_backtrace (void)
{
static zmq::mutex_t mtx;
mtx.lock ();
Dl_info dl_info;
unw_cursor_t cursor;
unw_context_t ctx;
Expand Down Expand Up @@ -429,8 +432,10 @@ void zmq::print_backtrace (void)
rc ? func_name : demangled_name, (unsigned long) offset);
free (demangled_name);
}

puts ("");

fflush (stdout);
mtx.unlock ();
}

#else
Expand Down

0 comments on commit 35cd024

Please sign in to comment.