0
0
mirror of https://github.com/zeromq/libzmq.git synced 2024-12-27 07:31:03 +08:00

Merge pull request #2610 from bjovke/my_work_2

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.
This commit is contained in:
Luca Boccassi 2017-06-27 21:05:48 +01:00 committed by GitHub
commit 35cd0245c9

View File

@ -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;
@ -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