improved shutdown delay debugging
This commit is contained in:
parent
db65ec2fd3
commit
b29b2314b2
|
@ -47,7 +47,7 @@ extern char const* libtorrent_assert_log;
|
|||
#include <string>
|
||||
|
||||
std::string demangle(char const* name);
|
||||
void print_backtrace(char* out, int len);
|
||||
void print_backtrace(char* out, int len, int max_depth = 0);
|
||||
|
||||
#if (defined __linux__ || defined __MACH__) && defined __GNUC__ && !TORRENT_USE_SYSTEM_ASSERT
|
||||
|
||||
|
|
|
@ -62,7 +62,7 @@ namespace libtorrent
|
|||
if (a.stack.empty())
|
||||
{
|
||||
char stack_text[10000];
|
||||
print_backtrace(stack_text, sizeof(stack_text));
|
||||
print_backtrace(stack_text, sizeof(stack_text), 9);
|
||||
a.stack = stack_text;
|
||||
}
|
||||
++a.refs;
|
||||
|
|
|
@ -114,7 +114,7 @@ std::string demangle(char const* name) { return name; }
|
|||
#if (defined __linux__ || (defined __APPLE__ && MAC_OS_X_VERSION_MIN_REQUIRED >= 1050))
|
||||
#include <execinfo.h>
|
||||
|
||||
void print_backtrace(char* out, int len)
|
||||
void print_backtrace(char* out, int len, int max_depth)
|
||||
{
|
||||
void* stack[50];
|
||||
int size = backtrace(stack, 50);
|
||||
|
@ -125,6 +125,7 @@ void print_backtrace(char* out, int len)
|
|||
int ret = snprintf(out, len, "%d: %s\n", i, demangle(symbols[i]).c_str());
|
||||
out += ret;
|
||||
len -= ret;
|
||||
if (i - 1 == max_depth && max_depth > 0) break;
|
||||
}
|
||||
|
||||
free(symbols);
|
||||
|
@ -141,7 +142,7 @@ void print_backtrace(char* out, int len)
|
|||
#include "winbase.h"
|
||||
#include "dbghelp.h"
|
||||
|
||||
void print_backtrace(char* out, int len)
|
||||
void print_backtrace(char* out, int len, int max_depth)
|
||||
{
|
||||
typedef USHORT (*RtlCaptureStackBackTrace_t)(
|
||||
__in ULONG FramesToSkip,
|
||||
|
@ -188,13 +189,14 @@ void print_backtrace(char* out, int len)
|
|||
|
||||
out += ret;
|
||||
len -= ret;
|
||||
if (i == max_depth && max_depth > 0) break;
|
||||
}
|
||||
free(symbol);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
void print_backtrace(char* out, int len) {}
|
||||
void print_backtrace(char* out, int len, int max_depth) {}
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -213,7 +215,7 @@ TORRENT_EXPORT void assert_fail(char const* expr, int line, char const* file
|
|||
#endif
|
||||
|
||||
char stack[8192];
|
||||
print_backtrace(stack, sizeof(stack));
|
||||
print_backtrace(stack, sizeof(stack), 0);
|
||||
|
||||
fprintf(out, "assertion failed. Please file a bugreport at "
|
||||
"http://code.rasterbar.com/libtorrent/newticket\n"
|
||||
|
|
|
@ -5502,7 +5502,7 @@ namespace aux {
|
|||
{
|
||||
sleep(1000);
|
||||
++counter;
|
||||
printf("\n==== Waiting to shut down: %d ==== \n\n", counter);
|
||||
printf("\n==== Waiting to shut down: %d ==== conn-queue: %d\n\n", counter, m_half_open.size());
|
||||
}
|
||||
async_dec_threads();
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue