diff --git a/client/TracyProfiler.cpp b/client/TracyProfiler.cpp index 86f872af..174339bf 100644 --- a/client/TracyProfiler.cpp +++ b/client/TracyProfiler.cpp @@ -1120,6 +1120,7 @@ struct ProfilerThreadData std::atomic RpInitDone { 0 }; std::atomic RpInitLock { 0 }; thread_local bool RpThreadInitDone = false; +thread_local bool RpThreadShutdown = false; # ifdef TRACY_MANUAL_LIFETIME ProfilerData* s_profilerData = nullptr; @@ -1267,6 +1268,7 @@ static InitTimeWrapper init_order(101) s_initTime { SetupHwTimer() }; std::atomic init_order(102) RpInitDone( 0 ); std::atomic init_order(102) RpInitLock( 0 ); thread_local bool RpThreadInitDone = false; +thread_local bool RpThreadShutdown = false; moodycamel::ConcurrentQueue init_order(103) s_queue( QueuePrealloc ); std::atomic init_order(104) s_lockCounter( 0 ); std::atomic init_order(104) s_gpuCtxCounter( 0 ); diff --git a/client/tracy_rpmalloc.cpp b/client/tracy_rpmalloc.cpp index c2628d79..fbfd74a0 100644 --- a/client/tracy_rpmalloc.cpp +++ b/client/tracy_rpmalloc.cpp @@ -1638,11 +1638,14 @@ _memory_adjust_size_class(size_t iclass) { } } +extern thread_local bool RpThreadShutdown; + static void _memory_heap_finalize(void* heapptr) { heap_t* heap = (heap_t*)heapptr; if (!heap) return; + RpThreadShutdown = true; //Release thread cache spans back to global cache #if ENABLE_THREAD_CACHE _memory_heap_cache_adopt_deferred(heap);