================ @@ -623,8 +630,20 @@ void Debugger::Terminate() { } if (g_thread_pool) { - // The destructor will wait for all the threads to complete. - delete g_thread_pool; + // Delete the thread pool in a different thread so we can set a timeout. ---------------- JDevlieghere wrote:
> Or is it too late and no one would receive events? Yup, that's exactly the problem. The debugger has already been destroyed at this point, otherwise I could've written to the debugger's output stream. By the time we terminate, there's pretty much nothing left at this point. Before I had the callback I just wrote to stderr directly, but that's not a very nice thing to do as a library. > Another option would be to have the thread pool detach from all threads so > that we don't need to wait until they complete and just go ahead and exit? That's what we did in the past and that caused a bunch of crashes. If you want to do that without crashing, you need to be very careful about what you do in a task running on the thread pool, because the debugger might have been destroyed and terminated while you were running. https://github.com/llvm/llvm-project/pull/82799 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits