Index: mojo/message_pump/handle_watcher.cc |
diff --git a/mojo/message_pump/handle_watcher.cc b/mojo/message_pump/handle_watcher.cc |
index 964f1e2d3348d80b1edef376538ce2eac0862639..1397dee9cc2290a9252acb95a88c570cf8e9b36b 100644 |
--- a/mojo/message_pump/handle_watcher.cc |
+++ b/mojo/message_pump/handle_watcher.cc |
@@ -222,7 +222,13 @@ WatcherThreadManager::~WatcherThreadManager() { |
} |
WatcherThreadManager* WatcherThreadManager::GetInstance() { |
- return base::Singleton<WatcherThreadManager>::get(); |
+ // We need to leak this because otherwise when the process dies, AtExitManager |
+ // waits for destruction which waits till the handle watcher thread is joined. |
+ // But that can't happen since the pump uses mojo message pipes to wake up the |
+ // pump. Since mojo EDK has been shutdown already, this never completes. |
+ return base::Singleton<WatcherThreadManager, |
+ base::LeakySingletonTraits<WatcherThreadManager>>:: |
+ get(); |
} |
WatcherID WatcherThreadManager::StartWatching( |