Currently, for extension event dispatch: ServiceWorkerTaskQueue starts the extension's worker and sends IPC to dispatch the event. The //content API used (ServiceWorkerContext::StartActiveWorkerForPattern) only looks for an "active" worker. If the event was dispatched early before the worker reached "activated" stage, we'll fail DCHECK in ServiceWorkerTaskQueue::DidStartActiveWorkerFail. In this case, the SW registration will only have installing_version(), but no waiting/active version.
My understanding is that we should also look at SWRegistration::installing_version in this case.
Comment 1 by bugdroid1@chromium.org
, Jun 11 2018