Index: content/renderer/service_worker/embedded_worker_dispatcher.cc |
diff --git a/content/renderer/service_worker/embedded_worker_dispatcher.cc b/content/renderer/service_worker/embedded_worker_dispatcher.cc |
index 2a9251aec82518e319eac0c856911049f5d12653..e68ad202d2f76ce5e016616d9b44bcddf6a7a5a6 100644 |
--- a/content/renderer/service_worker/embedded_worker_dispatcher.cc |
+++ b/content/renderer/service_worker/embedded_worker_dispatcher.cc |
@@ -77,7 +77,11 @@ void EmbeddedWorkerDispatcher::OnStartWorker( |
void EmbeddedWorkerDispatcher::OnStopWorker(int embedded_worker_id) { |
TRACE_EVENT0("ServiceWorker", "EmbeddedWorkerDispatcher::OnStopWorker"); |
WorkerWrapper* wrapper = workers_.Lookup(embedded_worker_id); |
- DCHECK(wrapper); |
+ // OnStopWorker is possible to be called twice. |
+ if (!wrapper) { |
+ LOG(WARNING) << "Got OnStopWorker for nonexistent worker"; |
+ return; |
+ } |
// This should eventually call WorkerContextDestroyed. (We may need to post |
// a delayed task to forcibly abort the worker context if we find it |
// necessary) |