[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