Index: chrome/service/service_process.cc |
diff --git a/chrome/service/service_process.cc b/chrome/service/service_process.cc |
index 0dca832cbbfac04d8317f8dbdec2ab82696973e7..a29cc1db80d361012977c1c1e26707d148b9cd15 100644 |
--- a/chrome/service/service_process.cc |
+++ b/chrome/service/service_process.cc |
@@ -237,6 +237,11 @@ bool ServiceProcess::Teardown() { |
mojo_ipc_support_.reset(); |
ipc_server_.reset(); |
+ |
+ // On POSIX, this must be called before joining |io_thread_| because it posts |
+ // a DeleteSoon() task to that thread. |
+ service_process_state_->SignalStopped(); |
+ |
// Signal this event before shutting down the service process. That way all |
// background threads can cleanup. |
shutdown_event_.Signal(); |
@@ -257,7 +262,6 @@ bool ServiceProcess::Teardown() { |
// might use it have been shut down. |
network_change_notifier_.reset(); |
- service_process_state_->SignalStopped(); |
return true; |
} |