Index: webrtc/call/call.cc |
diff --git a/webrtc/call/call.cc b/webrtc/call/call.cc |
index 25dcf32a620c48965c22077d8c6d35cc3b298267..16be32e70c6f3c31d9e625530cbb4434c9376288 100644 |
--- a/webrtc/call/call.cc |
+++ b/webrtc/call/call.cc |
@@ -436,17 +436,20 @@ Call::Call(const Call::Config& config, |
call_stats_->RegisterStatsObserver(&receive_side_cc_); |
call_stats_->RegisterStatsObserver(transport_send_->send_side_cc()); |
- module_process_thread_->Start(); |
- module_process_thread_->RegisterModule(call_stats_.get(), RTC_FROM_HERE); |
- module_process_thread_->RegisterModule(&receive_side_cc_, RTC_FROM_HERE); |
- module_process_thread_->RegisterModule(transport_send_->send_side_cc(), |
- RTC_FROM_HERE); |
+ // We have to attach the pacer to the pacer thread before starting the |
+ // module process thread to avoid a race accessing the process thread |
+ // both from the process thread and the pacer thread. |
pacer_thread_->RegisterModule(transport_send_->send_side_cc()->pacer(), |
RTC_FROM_HERE); |
pacer_thread_->RegisterModule( |
receive_side_cc_.GetRemoteBitrateEstimator(true), RTC_FROM_HERE); |
- |
pacer_thread_->Start(); |
+ |
+ module_process_thread_->RegisterModule(call_stats_.get(), RTC_FROM_HERE); |
+ module_process_thread_->RegisterModule(&receive_side_cc_, RTC_FROM_HERE); |
+ module_process_thread_->RegisterModule(transport_send_->send_side_cc(), |
+ RTC_FROM_HERE); |
+ module_process_thread_->Start(); |
} |
Call::~Call() { |