mirror of
https://github.com/zeromq/libzmq.git
synced 2025-03-03 12:58:05 +01:00
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:
parent
69355730a4
commit
9ef34addb8
@ -389,9 +389,12 @@ int zmq::wsa_error_to_errno (int errcode)
|
|||||||
#include <libunwind.h>
|
#include <libunwind.h>
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
#include <cxxabi.h>
|
#include <cxxabi.h>
|
||||||
|
#include "mutex.hpp"
|
||||||
|
|
||||||
void zmq::print_backtrace (void)
|
void zmq::print_backtrace (void)
|
||||||
{
|
{
|
||||||
|
static zmq::mutex_t mtx;
|
||||||
|
mtx.lock ();
|
||||||
Dl_info dl_info;
|
Dl_info dl_info;
|
||||||
unw_cursor_t cursor;
|
unw_cursor_t cursor;
|
||||||
unw_context_t ctx;
|
unw_context_t ctx;
|
||||||
@ -429,8 +432,10 @@ void zmq::print_backtrace (void)
|
|||||||
rc ? func_name : demangled_name, (unsigned long) offset);
|
rc ? func_name : demangled_name, (unsigned long) offset);
|
||||||
free (demangled_name);
|
free (demangled_name);
|
||||||
}
|
}
|
||||||
|
puts ("");
|
||||||
|
|
||||||
fflush (stdout);
|
fflush (stdout);
|
||||||
|
mtx.unlock ();
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
Loading…
x
Reference in New Issue
Block a user