[Lldb-commits] [lldb] [lldb] Print a message when background tasks take a while to complete (PR #82799)
Jonas Devlieghere via lldb-commits
lldb-commits at lists.llvm.org
Wed Feb 28 19:53:34 PST 2024
JDevlieghere wrote:
I tried implementing this and waiting on the thread pool when the last debugger is being destroyed is easy:
```
// Only hold the debugger list lock long enough to check if we're the last
// debugger being destroyed.
bool last_debugger_being_destroyed = false;
if (g_debugger_list_ptr && g_debugger_list_mutex_ptr) {
std::lock_guard<std::recursive_mutex> guard(*g_debugger_list_mutex_ptr);
last_debugger_being_destroyed =
g_debugger_list_ptr->size() == 1 &&
(*g_debugger_list_ptr)[0].get() == debugger_sp.get();
}
// Check if we should wait on the thread pool. If the debugger being destroyed
// is the very last one, we can safely assume work is being done on its
// behalf. We want to keep the debugger alive at least until the background
// tasks are finished so they can report their progress.
if (last_debugger_being_destroyed)
g_thread_pool->wait();
```
However, at that point there's no default event handler thread anymore: we tear it down when exiting `RunCommandInterpreter`. I think I'm just going to move the timeout to the driver and call it a day...
https://github.com/llvm/llvm-project/pull/82799
More information about the lldb-commits
mailing list