nagisa/rust_tracy_client

macOS: Segfault just after connecting from Tracy profiler

Closed this issue · 3 comments

tracing-tracy 0.3.0, macOS, Tracy 0.7.3.

Just after connecting to my tracing-tracy instrumented application from the Tracy profiler UI tool, my application segfaults. Here is the backtrace:

tracy::_memory_allocate(tracy::heap_t*, unsigned long) (/Users/robswain/.cargo/registry/src/github.com-1ecc6299db9ec823/tracy-client-sys-0.10.0/tracy/client/tracy_rpmalloc.cpp:0)
tracy::rpmalloc(unsigned long) (/Users/robswain/.cargo/registry/src/github.com-1ecc6299db9ec823/tracy-client-sys-0.10.0/tracy/client/tracy_rpmalloc.cpp:2135)
tracy::backtrace_alloc(tracy::backtrace_state*, unsigned long, void (*)(void*, char const*, int), void*) (/Users/robswain/.cargo/registry/src/github.com-1ecc6299db9ec823/tracy-client-sys-0.10.0/tracy/libbacktrace/alloc.cpp:62)
tracy::macho_add_dsym(tracy::backtrace_state*, char const*, unsigned long, unsigned char const*, void (*)(void*, char const*, int), void*, int (**)(tracy::backtrace_state*, unsigned long, int (*)(void*, unsigned long, unsigned long, char const*, int, char const*), void (*)(void*, char const*, int), void*)) (/Users/robswain/.cargo/registry/src/github.com-1ecc6299db9ec823/tracy-client-sys-0.10.0/tracy/libbacktrace/macho.cpp:878)
tracy::macho_add(tracy::backtrace_state*, char const*, int, long long, unsigned char const*, unsigned long, int, void (*)(void*, char const*, int), void*, int (**)(tracy::backtrace_state*, unsigned long, int (*)(void*, unsigned long, unsigned long, char const*, int, char const*), void (*)(void*, char const*, int), void*), int*) (/Users/robswain/.cargo/registry/src/github.com-1ecc6299db9ec823/tracy-client-sys-0.10.0/tracy/libbacktrace/macho.cpp:1161)
tracy::backtrace_initialize(tracy::backtrace_state*, char const*, int, void (*)(void*, char const*, int), void*, int (**)(tracy::backtrace_state*, unsigned long, int (*)(void*, unsigned long, unsigned long, char const*, int, char const*), void (*)(void*, char const*, int), void*)) (/Users/robswain/.cargo/registry/src/github.com-1ecc6299db9ec823/tracy-client-sys-0.10.0/tracy/libbacktrace/macho.cpp:1226)
tracy::fileline_initialize(tracy::backtrace_state*, void (*)(void*, char const*, int), void*) (/Users/robswain/.cargo/registry/src/github.com-1ecc6299db9ec823/tracy-client-sys-0.10.0/tracy/libbacktrace/fileline.cpp:245)
tracy::backtrace_pcinfo(tracy::backtrace_state*, unsigned long, int (*)(void*, unsigned long, unsigned long, char const*, int, char const*), void (*)(void*, char const*, int), void*) (/Users/robswain/.cargo/registry/src/github.com-1ecc6299db9ec823/tracy-client-sys-0.10.0/tracy/libbacktrace/fileline.cpp:279)
tracy::DecodeCallstackPtr(unsigned long long) (/Users/robswain/.cargo/registry/src/github.com-1ecc6299db9ec823/tracy-client-sys-0.10.0/tracy/client/TracyCallstack.cpp:601)
tracy::Profiler::SendCallstackFrame(unsigned long long) (/Users/robswain/.cargo/registry/src/github.com-1ecc6299db9ec823/tracy-client-sys-0.10.0/tracy/client/TracyProfiler.cpp:2424)
tracy::Profiler::HandleServerQuery() (/Users/robswain/.cargo/registry/src/github.com-1ecc6299db9ec823/tracy-client-sys-0.10.0/tracy/client/TracyProfiler.cpp:2495)
tracy::Profiler::Worker() (/Users/robswain/.cargo/registry/src/github.com-1ecc6299db9ec823/tracy-client-sys-0.10.0/tracy/client/TracyProfiler.cpp:1537)
tracy::Thread::Launch(void*) (/Users/robswain/.cargo/registry/src/github.com-1ecc6299db9ec823/tracy-client-sys-0.10.0/tracy/client/TracyThread.hpp:75)
_pthread_start (@_pthread_start:42)
thread_start (@thread_start:8)

Please report this against Tracy itself. This kind of issue been seen when the tracy profiler operates without TLS being initialized. We strive to force such initialization for function calls that are wrapped by tracy-client and tracy-client-sys, but in this particular case it seems like this is a thread that's entirely internal to tracy itself, so I cannot really do much about it.

Ok, thanks.

According to reports in #12 this appears to be fixed now!