Intermittent Assertion failure: mResponseTarget->IsOnCurrentThread(), at /builds/worker/workspace/obj-build/dist/include/mozilla/MozPromise.h:628
Categories
(Core :: XPCOM, defect, P5)
Tracking
()
| Tracking | Status | |
|---|---|---|
| firefox-esr140 | --- | unaffected |
| firefox147 | --- | unaffected |
| firefox148 | --- | unaffected |
| firefox149 | --- | wontfix |
| firefox150 | --- | wontfix |
| firefox151 | --- | wontfix |
| firefox152 | --- | fixed |
| firefox153 | --- | fixed |
People
(Reporter: intermittent-bug-filer, Assigned: edenchuang)
References
(Blocks 1 open bug, Regression)
Details
(4 keywords)
Crash Data
Attachments
(2 external files)
Filed by: sstanca [at] mozilla.com
Parsed log: https://treeherder.mozilla.org/logviewer?job_id=549251246&repo=autoland&task=TASUJ9TzSryT0tSxDMA9aA.0
Full log: https://firefox-ci-tc.services.mozilla.com/api/queue/v1/task/TASUJ9TzSryT0tSxDMA9aA/runs/0/artifacts/public/logs/live_backing.log
Reftest URL: https://hg.mozilla.org/mozilla-central/raw-file/default/layout/tools/reftest/reftest-analyzer.xhtml#logurl=https://firefox-ci-tc.services.mozilla.com/api/queue/v1/task/TASUJ9TzSryT0tSxDMA9aA/runs/0/artifacts/public/logs/live_backing.log&only_show_unexpected=1
[task 2026-02-18T02:33:47.090+00:00] 02:33:47 INFO - REFTEST TEST-PASS | dom/media/test/crashtests/2014861.html |
[task 2026-02-18T02:33:47.090+00:00] 02:33:47 INFO - REFTEST TEST-END | dom/media/test/crashtests/2014861.html
[task 2026-02-18T02:33:47.090+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.091+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.092+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.092+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.093+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.094+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.094+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.095+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.095+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.096+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.097+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.097+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.098+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.098+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.099+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.100+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.100+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.101+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.101+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.107+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.107+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.107+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.107+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.107+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.107+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.107+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.107+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.107+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.107+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.107+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.108+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.108+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.109+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.109+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.110+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.110+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.111+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.111+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.112+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.112+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.113+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.113+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.114+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.114+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.115+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.115+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.116+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.116+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.117+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.117+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.118+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.118+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.119+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.119+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.120+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.120+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.121+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.121+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.121+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.122+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.123+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.123+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.124+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.124+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.125+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.125+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.126+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.126+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.127+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.127+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.128+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.128+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.129+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.129+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.130+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.130+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.131+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.131+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.132+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.132+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.133+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.133+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.134+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.134+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.135+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.135+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.136+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
<...>
[task 2026-02-18T02:33:47.175+00:00] 02:33:47 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:47.175+00:00] 02:33:47 INFO - [1863] Assertion failure: mResponseTarget->IsOnCurrentThread(), at /builds/worker/workspace/obj-build/dist/include/mozilla/MozPromise.h:628
[task 2026-02-18T02:33:47.176+00:00] 02:33:47 INFO - Initializing stack-fixing for the first stack frame, this may take a while...
[task 2026-02-18T02:33:58.175+00:00] 02:33:58 INFO - #01: mozilla::MozPromise<RefPtr<_GVariant>, std::unique_ptr<_GError, mozilla::GFreeDeleter>, true>::ThenValueBase::DoResolveOrReject(mozilla::MozPromise<RefPtr<_GVariant>, std::unique_ptr<_GError, mozilla::GFreeDeleter>, true>::ResolveOrRejectValue&) [git:github.com/mozilla-firefox/firefox:xpcom/threads/MozPromise.h:df67f3dd09eae54645811dc48ac3d866025348b9:628]
[task 2026-02-18T02:33:58.176+00:00] 02:33:58 INFO - #02: mozilla::MozPromise<mozilla::Maybe<mozilla::net::RemoteStreamInfo>, mozilla::ipc::ResponseRejectReason, true>::ThenValueBase::ResolveOrRejectRunnable::Run() [git:github.com/mozilla-firefox/firefox:xpcom/threads/MozPromise.h:df67f3dd09eae54645811dc48ac3d866025348b9:506]
[task 2026-02-18T02:33:58.176+00:00] 02:33:58 INFO - #03: mozilla::dom::(anonymous namespace)::ExternalRunnableWrapper::WorkerRun(JSContext*, mozilla::dom::WorkerPrivate*) [git:github.com/mozilla-firefox/firefox:dom/workers/WorkerPrivate.cpp:df67f3dd09eae54645811dc48ac3d866025348b9:230]
[task 2026-02-18T02:33:58.177+00:00] 02:33:58 INFO - #04: mozilla::dom::WorkerThreadRunnable::Run() [git:github.com/mozilla-firefox/firefox:dom/workers/WorkerRunnable.cpp:df67f3dd09eae54645811dc48ac3d866025348b9:440]
[task 2026-02-18T02:33:58.177+00:00] 02:33:58 INFO - #05: nsThread::ProcessNextEvent(bool, bool*) [git:github.com/mozilla-firefox/firefox:xpcom/threads/nsThread.cpp:df67f3dd09eae54645811dc48ac3d866025348b9:1164]
[task 2026-02-18T02:33:58.178+00:00] 02:33:58 INFO - #06: NS_ProcessPendingEvents(nsIThread*, unsigned int) [git:github.com/mozilla-firefox/firefox:xpcom/threads/nsThreadUtils.cpp:df67f3dd09eae54645811dc48ac3d866025348b9:432]
[task 2026-02-18T02:33:58.179+00:00] 02:33:58 INFO - #07: mozilla::dom::workerinternals::(anonymous namespace)::WorkerThreadPrimaryRunnable::Run() [git:github.com/mozilla-firefox/firefox:dom/workers/RuntimeService.cpp:df67f3dd09eae54645811dc48ac3d866025348b9:2340]
[task 2026-02-18T02:33:58.179+00:00] 02:33:58 INFO - #08: nsThread::ProcessNextEvent(bool, bool*) [git:github.com/mozilla-firefox/firefox:xpcom/threads/nsThread.cpp:df67f3dd09eae54645811dc48ac3d866025348b9:1164]
[task 2026-02-18T02:33:58.180+00:00] 02:33:58 INFO - #09: NS_ProcessNextEvent(nsIThread*, bool) [git:github.com/mozilla-firefox/firefox:xpcom/threads/nsThreadUtils.cpp:df67f3dd09eae54645811dc48ac3d866025348b9:467]
[task 2026-02-18T02:33:58.180+00:00] 02:33:58 INFO - #10: mozilla::ipc::MessagePumpForNonMainThreads::Run(base::MessagePump::Delegate*) [git:github.com/mozilla-firefox/firefox:ipc/glue/MessagePump.cpp:df67f3dd09eae54645811dc48ac3d866025348b9:300]
[task 2026-02-18T02:33:58.181+00:00] 02:33:58 INFO - #11: MessageLoop::Run() [git:github.com/mozilla-firefox/firefox:ipc/chromium/src/base/message_loop.cc:df67f3dd09eae54645811dc48ac3d866025348b9:349]
[task 2026-02-18T02:33:58.181+00:00] 02:33:58 INFO - #12: nsThread::ThreadFunc(void*) [git:github.com/mozilla-firefox/firefox:xpcom/threads/nsThread.cpp:df67f3dd09eae54645811dc48ac3d866025348b9:375]
[task 2026-02-18T02:33:58.183+00:00] 02:33:58 INFO - #13: _pt_root [git:github.com/mozilla-firefox/firefox:nsprpub/pr/src/pthreads/ptthread.c:df67f3dd09eae54645811dc48ac3d866025348b9:194]
[task 2026-02-18T02:33:58.222+00:00] 02:33:58 INFO - #14: set_alt_signal_stack_and_start(PthreadCreateParams*) [git:github.com/mozilla-firefox/firefox:mozglue/interposers/pthread_create_interposer.cpp:df67f3dd09eae54645811dc48ac3d866025348b9:81]
[task 2026-02-18T02:33:58.222+00:00] 02:33:58 INFO - #15: ??? [/lib/x86_64-linux-gnu/libc.so.6 + 0x9caa4]
[task 2026-02-18T02:33:58.223+00:00] 02:33:58 INFO - #16: __clone [/lib/x86_64-linux-gnu/libc.so.6 + 0x129a34]
[task 2026-02-18T02:33:58.223+00:00] 02:33:58 INFO - #17: ??? (???:???)
[task 2026-02-18T02:33:58.224+00:00] 02:33:58 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:58.224+00:00] 02:33:58 INFO - [Child 1863, DOM Worker] WARNING: '!window', file /builds/worker/checkouts/gecko/dom/media/mediacapabilities/MediaCapabilities.cpp:757
[task 2026-02-18T02:33:58.225+00:00] 02:33:58 INFO - [Parent 1482, IPC I/O Parent] WARNING: [1.1]: Dropping message '<null>'; no connection to unknown peer 9F81975C68890CE7.B18D79B928B80643: file /builds/worker/checkouts/gecko/ipc/glue/NodeController.cpp:368
[task 2026-02-18T02:33:58.225+00:00] 02:33:58 INFO - [Parent 1482, IPDL Background] WARNING: IPC Connection Error: [Parent][PBackgroundParent] Send(msgname=PVsync::Msg_Notify) Channel error: cannot send/recv: file /builds/worker/checkouts/gecko/ipc/glue/MessageChannel.cpp:1924
[task 2026-02-18T02:33:58.226+00:00] 02:33:58 INFO - [Parent 1482, Main Thread] WARNING: IPC message 'PBrowser::Msg_StopIMEStateManagement' discarded: actor cannot send: file /builds/worker/checkouts/gecko/ipc/glue/ProtocolUtils.cpp:511
[task 2026-02-18T02:33:58.227+00:00] 02:33:58 INFO - [Parent 1482, ProcessHangMon] WARNING: IPC message 'PProcessHangMonitor::Msg_RequestContentJSInterrupt' discarded: actor cannot send: file /builds/worker/checkouts/gecko/ipc/glue/ProtocolUtils.cpp:511
[task 2026-02-18T02:33:58.227+00:00] 02:33:58 INFO - [Parent 1482, Main Thread] WARNING: IPC message 'PBrowser::Msg_Destroy' discarded: actor cannot send: file /builds/worker/checkouts/gecko/ipc/glue/ProtocolUtils.cpp:511
[task 2026-02-18T02:33:58.228+00:00] 02:33:58 INFO - [Parent 1482, Main Thread] WARNING: No build ID mismatch: file /builds/worker/checkouts/gecko/dom/base/nsFrameLoader.cpp:3759
[task 2026-02-18T02:33:58.228+00:00] 02:33:58 ERROR - A content process crashed and MOZ_CRASHREPORTER_SHUTDOWN is set, shutting down
[task 2026-02-18T02:33:58.229+00:00] 02:33:58 INFO - 1771382027030 Marionette TRACE Received observer notification quit-application
[task 2026-02-18T02:33:58.229+00:00] 02:33:58 INFO - 1771382027030 Marionette TRACE Application is shutting down with reason: "shutdown"
[task 2026-02-18T02:33:58.229+00:00] 02:33:58 INFO - 1771382027030 Marionette INFO Stopped listening on port 2828
[task 2026-02-18T02:33:58.230+00:00] 02:33:58 INFO - [Parent 1482, Main Thread] WARNING: IPC message 'PContent::Msg_CommitBrowsingContextTransaction' discarded: actor cannot send: file /builds/worker/checkouts/gecko/ipc/glue/ProtocolUtils.cpp:511
[task 2026-02-18T02:33:58.230+00:00] 02:33:58 INFO - [Parent 1482, Main Thread] WARNING: IPC message 'PContent::Msg_CommitBrowsingContextTransaction' discarded: actor cannot send: file /builds/worker/checkouts/gecko/ipc/glue/ProtocolUtils.cpp:511
[task 2026-02-18T02:33:58.231+00:00] 02:33:58 INFO - [Parent 1482, Main Thread] WARNING: IPC message 'PContent::Msg_DiscardBrowsingContext' discarded: actor cannot send: file /builds/worker/checkouts/gecko/ipc/glue/ProtocolUtils.cpp:511
[task 2026-02-18T02:33:58.231+00:00] 02:33:58 INFO - 1771382027058 Marionette DEBUG Marionette stopped listening
[task 2026-02-18T02:33:58.232+00:00] 02:33:58 INFO - [Parent 1482, IPC I/O Parent] WARNING: process 1863 exited on signal 11: file /builds/worker/checkouts/gecko/ipc/chromium/src/chrome/common/process_watcher_posix_sigchld.cc:163
[task 2026-02-18T02:33:58.232+00:00] 02:33:58 INFO - [Parent 1482, Socket Thread] WARNING: cannot post event if not initialized: file /builds/worker/checkouts/gecko/netwerk/protocol/http/nsHttpConnectionMgr.cpp:249
[task 2026-02-18T02:33:58.233+00:00] 02:33:58 INFO - [Parent 1482, Socket Thread] WARNING: cannot post event if not initialized: file /builds/worker/checkouts/gecko/netwerk/protocol/http/nsHttpConnectionMgr.cpp:249
[task 2026-02-18T02:33:58.233+00:00] 02:33:58 INFO - !!! error running onStopped callback: TypeError: callback is not a function
[task 2026-02-18T02:33:58.234+00:00] 02:33:58 INFO - [Parent 1482, Main Thread] WARNING: BlockShutdown: Init failed: 'NS_FAILED(rv)', file /builds/worker/checkouts/gecko/toolkit/components/antitracking/bouncetrackingprotection/BounceTrackingProtectionStorage.cpp:538
[task 2026-02-18T02:33:58.234+00:00] 02:33:58 INFO - [Parent 1482, IPDL Background] WARNING: quota manager shutdown step: '0.000000s: startCrashBrowserTimer', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2367
[task 2026-02-18T02:33:58.235+00:00] 02:33:58 INFO - [Parent 1482, IPDL Background] WARNING: quota manager shutdown step: '0.000000s: initiateShutdownWorkThreads', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2367
[task 2026-02-18T02:33:58.235+00:00] 02:33:58 INFO - [Parent 1482, IPDL Background] WARNING: idb: '0.001000s: starting', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2367
[task 2026-02-18T02:33:58.236+00:00] 02:33:58 INFO - [Parent 1482, IPDL Background] WARNING: cache: '0.001000s: starting', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2367
[task 2026-02-18T02:33:58.236+00:00] 02:33:58 INFO - [Parent 1482, IPDL Background] WARNING: sdb: '0.001000s: starting', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2367
[task 2026-02-18T02:33:58.237+00:00] 02:33:58 INFO - [Parent 1482, IPDL Background] WARNING: fs: '0.001000s: starting', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2367
[task 2026-02-18T02:33:58.237+00:00] 02:33:58 INFO - [Parent 1482, IPDL Background] WARNING: ls: '0.001000s: starting', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2367
[task 2026-02-18T02:33:58.238+00:00] 02:33:58 INFO - [Parent 1482, IPDL Background] WARNING: quota manager shutdown step: '0.001000s: startKillActorsTimer', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2367
[task 2026-02-18T02:33:58.238+00:00] 02:33:58 INFO - [Parent 1482, IPDL Background] WARNING: idb: '0.001000s: Live database entry removed', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2367
[task 2026-02-18T02:33:58.239+00:00] 02:33:58 INFO - [Parent 1482, IPDL Background] WARNING: idb: '0.001000s: gLiveDatabaseHashtable entry removed', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2367
[task 2026-02-18T02:33:58.239+00:00] 02:33:58 INFO - [Parent 1482, IPDL Background] WARNING: idb: '0.001000s: Live database entry removed', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2367
[task 2026-02-18T02:33:58.240+00:00] 02:33:58 INFO - [Parent 1482, IPDL Background] WARNING: idb: '0.001000s: gLiveDatabaseHashtable entry removed', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2367
[task 2026-02-18T02:33:58.240+00:00] 02:33:58 INFO - [Parent 1482, IPDL Background] WARNING: idb: '0.001000s: Live database entry removed', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2367
[task 2026-02-18T02:33:58.241+00:00] 02:33:58 INFO - [Parent 1482, IPDL Background] WARNING: idb: '0.001000s: gLiveDatabaseHashtable entry removed', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2367
[task 2026-02-18T02:33:58.241+00:00] 02:33:58 INFO - [Parent 1482, IPDL Background] WARNING: idb: '0.004000s: Live database entry removed', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2367
[task 2026-02-18T02:33:58.242+00:00] 02:33:58 INFO - [Parent 1482, IPDL Background] WARNING: idb: '0.004000s: gLiveDatabaseHashtable entry removed', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2367
[task 2026-02-18T02:33:58.242+00:00] 02:33:58 INFO - [Parent 1482, QuotaManager IO] WARNING: quota manager shutdown step: '0.004000s: ShutdownStorageOp::DoDirectoryWork -> ShutdownStorageInternal.', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2367
[task 2026-02-18T02:33:58.243+00:00] 02:33:58 INFO - [Parent 1482, IPDL Background] WARNING: quota manager shutdown step: '0.004000s: stopKillActorsTimer', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2367
[task 2026-02-18T02:33:58.244+00:00] 02:33:58 INFO - [Parent 1482, IPDL Background] WARNING: quota manager shutdown step: '0.004000s: shutdownAndJoinWorkThreads', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2367
[task 2026-02-18T02:33:58.244+00:00] 02:33:58 INFO - [Parent 1482, IPDL Background] WARNING: idb: '0.004000s: completed', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2367
[task 2026-02-18T02:33:58.245+00:00] 02:33:58 INFO - [Parent 1482, IPDL Background] WARNING: cache: '0.005000s: completed', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2367
[task 2026-02-18T02:33:58.245+00:00] 02:33:58 INFO - [Parent 1482, IPDL Background] WARNING: sdb: '0.005000s: completed', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2367
[task 2026-02-18T02:33:58.246+00:00] 02:33:58 INFO - [Parent 1482, IPDL Background] WARNING: fs: '0.005000s: completed', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2367
[task 2026-02-18T02:33:58.246+00:00] 02:33:58 INFO - [Parent 1482, IPDL Background] WARNING: ls: '0.005000s: completed', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2367
[task 2026-02-18T02:33:58.247+00:00] 02:33:58 INFO - [Parent 1482, IPDL Background] WARNING: quota manager shutdown step: '0.005000s: shutdownAndJoinIOThread', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2367
[task 2026-02-18T02:33:58.247+00:00] 02:33:58 INFO - [Parent 1482, IPDL Background] WARNING: quota manager shutdown step: '0.005000s: invalidatePendingDirectoryLocks', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2367
[task 2026-02-18T02:33:58.248+00:00] 02:33:58 INFO - [Parent 1482, IPDL Background] WARNING: quota manager shutdown step: '0.005000s: stopCrashBrowserTimer', file /builds/worker/checkouts/gecko/dom/quota/ActorsParent.cpp:2367
[task 2026-02-18T02:33:58.248+00:00] 02:33:58 INFO - [Utility 1700, Main Thread] WARNING: IPC message 'PUtilityProcess::Msg_FOGData' discarded: actor cannot send: file /builds/worker/checkouts/gecko/ipc/glue/ProtocolUtils.cpp:511
[task 2026-02-18T02:33:58.249+00:00] 02:33:58 INFO - 1771382027673 Marionette TRACE Received observer notification xpcom-shutdown
[task 2026-02-18T02:33:58.249+00:00] 02:33:58 INFO - [Parent 1482, Main Thread] WARNING: Worker has already shut down!!!: file /builds/worker/checkouts/gecko/dom/workers/WorkerRunnable.cpp:175
[task 2026-02-18T02:33:58.250+00:00] 02:33:58 INFO - [Parent 1482, Main Thread] WARNING: Worker has already shut down!!!: file /builds/worker/checkouts/gecko/dom/workers/WorkerRunnable.cpp:175
[task 2026-02-18T02:33:58.250+00:00] 02:33:58 INFO - [Parent 1482, Main Thread] WARNING: Worker has already shut down!!!: file /builds/worker/checkouts/gecko/dom/workers/WorkerRunnable.cpp:175
[task 2026-02-18T02:33:58.251+00:00] 02:33:58 INFO - [RDD 1611, Main Thread] WARNING: IPC message 'PRDD::Msg_FOGData' discarded: actor cannot send: file /builds/worker/checkouts/gecko/ipc/glue/ProtocolUtils.cpp:511
[task 2026-02-18T02:33:58.251+00:00] 02:33:58 INFO - Destroying context 7fc9f45f3c80 surface 0 on display 7fca0fd1a800
[task 2026-02-18T02:33:58.252+00:00] 02:33:58 INFO - 1771382027702 Marionette TRACE Received observer notification xpcom-shutdown-threads
[task 2026-02-18T02:33:58.253+00:00] 02:33:58 INFO - REFTEST INFO | Copy/paste: /builds/worker/fetches/minidump-stackwalk/minidump-stackwalk --symbols-url=https://symbols.mozilla.org/ --cyborg=/builds/worker/workspace/build/blobber_upload_dir/02e749f5-f438-46b6-4796-7c52114f6a2b.json /tmp/tmp4o9krxp6.mozrunner/minidumps/02e749f5-f438-46b6-4796-7c52114f6a2b.dmp /builds/worker/workspace/build/symbols
[task 2026-02-18T02:34:03.225+00:00] 02:34:03 INFO - REFTEST INFO | Saved minidump as /builds/worker/workspace/build/blobber_upload_dir/02e749f5-f438-46b6-4796-7c52114f6a2b.dmp
[task 2026-02-18T02:34:03.226+00:00] 02:34:03 INFO - REFTEST INFO | Saved app info as /builds/worker/workspace/build/blobber_upload_dir/02e749f5-f438-46b6-4796-7c52114f6a2b.extra
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - REFTEST PROCESS-CRASH | 02e749f5-f438-46b6-4796-7c52114f6a2b | MOZ_DIAGNOSTIC_ASSERT(mResponseTarget->IsOnCurrentThread()) [@ mozilla::MozPromise<RefPtr<_GVariant>, std::unique_ptr<_GError, mozilla::GFreeDeleter>, true>::ThenValueBase::DoResolveOrReject] | dom/media/test/crashtests/2014861.html (finished)
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - Process type: content
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - Process pid: 1976
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - Mozilla crash reason: MOZ_DIAGNOSTIC_ASSERT(mResponseTarget->IsOnCurrentThread())
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - Crash dump filename: /tmp/tmp4o9krxp6.mozrunner/minidumps/02e749f5-f438-46b6-4796-7c52114f6a2b.dmp
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - Operating system: Linux
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - 6.14.0-1021-gcp #22~24.04.1-Ubuntu SMP Sat Nov 22 06:23:18 UTC 2025
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - CPU: amd64
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - family 25 model 17 stepping 1
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - 8 CPUs
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - Linux Ubuntu 24.04 - noble (Ubuntu 24.04.2 LTS)
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO -
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - Crash reason: SIGSEGV / SEGV_MAPERR
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - Crash address: 0x0000000000000000 **
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - ** Null pointer detected with offset: 0x0000000000000000
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - Crashing instruction: `mov qword [rax], rcx`
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - Memory accessed by instruction:
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - 0. Address: 0x0000000000000000
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - Size: 8
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - Access type: Write
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - No instruction pointer update by instruction
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - Process uptime: not available
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO -
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - Linux memory map count: 1232
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO -
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - Thread 32 DOM Worker (crashed) - tid: 1976
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - 0 libxul.so!MOZ_CrashSequence(void*, long) [Assertions.h:df67f3dd09eae54645811dc48ac3d866025348b9 : 237]
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - Found by: inlining
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - 1 libxul.so!mozilla::MozPromise<RefPtr<_GVariant>, std::unique_ptr<_GError, mozilla::GFreeDeleter>, true>::ThenValueBase::DoResolveOrReject(mozilla::MozPromise<RefPtr<_GVariant>, std::unique_ptr<_GError, mozilla::GFreeDeleter>, true>::ResolveOrRejectValue&) [MozPromise.h:df67f3dd09eae54645811dc48ac3d866025348b9 : 628 + 0x5]
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - rax = 0x0000000000000000 rdx = 0x00007f92f6dc9563
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - rcx = 0x0000000000000274 rbx = 0x00007f92d2268660
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - rsi = 0x0000000000000000 rdi = 0x00007f92f6dca700
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - rbp = 0x00007f92d2cff4d0 rsp = 0x00007f92d2cff4c0
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - r8 = 0x0000000000000000 r9 = 0x0000000000000003
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - r10 = 0x0000000000000002 r11 = 0x0000000000000293
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - r12 = 0x00007f92d603ba00 r13 = 0x0000000000000000
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - r14 = 0x00007f92d22a4b20 r15 = 0x00007f92d1c19530
[task 2026-02-18T02:34:03.594+00:00] 02:34:03 INFO - rip = 0x00007f92e16554a8
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - Found by: given as instruction pointer in context
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - 2 libxul.so!mozilla::MozPromise<mozilla::Maybe<mozilla::net::RemoteStreamInfo>, mozilla::ipc::ResponseRejectReason, true>::ThenValueBase::ResolveOrRejectRunnable::Run() [MozPromise.h:df67f3dd09eae54645811dc48ac3d866025348b9 : 505 + 0x4]
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - rbx = 0x00007f92da11bb20 rbp = 0x00007f92d2cff4f0
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - rsp = 0x00007f92d2cff4e0 r12 = 0x00007f92d603ba00
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - r13 = 0x0000000000000000 r14 = 0x00007f92d213dc00
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - r15 = 0x00007f92d1c19530 rip = 0x00007f92e1ea3c0e
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - Found by: call frame info
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - 3 libxul.so!mozilla::dom::(anonymous namespace)::ExternalRunnableWrapper::WorkerRun(JSContext*, mozilla::dom::WorkerPrivate*) [WorkerPrivate.cpp:df67f3dd09eae54645811dc48ac3d866025348b9 : 230 + 0x9]
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - rbx = 0x00007f92d603ba00 rbp = 0x00007f92d2cff540
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - rsp = 0x00007f92d2cff500 r12 = 0x00007f92d603ba00
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - r13 = 0x0000000000000000 r14 = 0x00007f92d213dc00
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - r15 = 0x00007f92d1c19530 rip = 0x00007f92e61b3945
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - Found by: call frame info
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - 4 libxul.so!mozilla::dom::WorkerThreadRunnable::Run() [WorkerRunnable.cpp:df67f3dd09eae54645811dc48ac3d866025348b9 : 440 + 0x11]
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - rbx = 0x00007f92d1c19500 rbp = 0x00007f92d2cff680
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - rsp = 0x00007f92d2cff550 r12 = 0x00007f92d603ba00
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - r13 = 0x0000000000000000 r14 = 0x00007f92d213dc00
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - r15 = 0x00007f92d2cff560 rip = 0x00007f92e61a40eb
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - Found by: call frame info
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - 5 libxul.so!nsThread::ProcessNextEvent(bool, bool*) [nsThread.cpp:df67f3dd09eae54645811dc48ac3d866025348b9 : 1163 + 0x5]
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - rbx = 0x00007f92d5c7e200 rbp = 0x00007f92d2cff7b0
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - rsp = 0x00007f92d2cff690 r12 = 0x00000039a5b46e1c
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - r13 = 0x0000000000000000 r14 = 0xaaaaaaaaaaaaaaaa
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - r15 = 0x0000000000000000 rip = 0x00007f92e16adf15
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - Found by: call frame info
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - 6 libxul.so!NS_ProcessPendingEvents(nsIThread*, unsigned int) [nsThreadUtils.cpp:df67f3dd09eae54645811dc48ac3d866025348b9 : 432 + 0x11]
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - rbx = 0x00000000ffffffff rbp = 0x00007f92d2cff800
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - rsp = 0x00007f92d2cff7c0 r12 = 0x000000000003c729
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - r13 = 0x00000000d432ef01 r14 = 0x00007f92d5c7e200
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - r15 = 0x00007f92d603ba00 rip = 0x00007f92e16aac8d
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - Found by: call frame info
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - 7 libxul.so!mozilla::dom::workerinternals::(anonymous namespace)::WorkerThreadPrimaryRunnable::Run() [RuntimeService.cpp:df67f3dd09eae54645811dc48ac3d866025348b9 : 2336 + 0xb]
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - rbx = 0x00007f92d23bcfc0 rbp = 0x00007f92d2cff970
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - rsp = 0x00007f92d2cff810 r12 = 0x0000000080004005
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - r13 = 0x00000000d432ef01 r14 = 0x00007f92d230f000
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - r15 = 0x00007f92d603ba00 rip = 0x00007f92e61756f4
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - Found by: call frame info
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - 8 libxul.so!nsThread::ProcessNextEvent(bool, bool*) [nsThread.cpp:df67f3dd09eae54645811dc48ac3d866025348b9 : 1163 + 0x5]
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - rbx = 0x00007f92d5c7e200 rbp = 0x00007f92d2cffaa0
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - rsp = 0x00007f92d2cff980 r12 = 0x00000039a022ae15
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - r13 = 0x0000000000000000 r14 = 0xaaaaaaaaaaaaaaaa
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - r15 = 0x0000000000000000 rip = 0x00007f92e16adf15
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - Found by: call frame info
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - 9 libxul.so!NS_ProcessNextEvent(nsIThread*, bool) [nsThreadUtils.cpp:df67f3dd09eae54645811dc48ac3d866025348b9 : 467 + 0xf]
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - rbx = 0x0000000000000000 rbp = 0x00007f92d2cffad0
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - rsp = 0x00007f92d2cffab0 r12 = 0x00007f92d2cffae8
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - r13 = 0x00007f92d1c1a260 r14 = 0x00007f92d2cffb80
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - r15 = 0x00007f92d5c7e200 rip = 0x00007f92e16b39f0
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - Found by: call frame info
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - 10 libxul.so!mozilla::ipc::MessagePumpForNonMainThreads::Run(base::MessagePump::Delegate*) [MessagePump.cpp:df67f3dd09eae54645811dc48ac3d866025348b9 : 299 + 0x9]
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - rbx = 0x00007f92d1c1a240 rbp = 0x00007f92d2cffb20
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - rsp = 0x00007f92d2cffae0 r12 = 0x00007f92d2cffae8
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - r13 = 0x00007f92d1c1a260 r14 = 0x00007f92d2cffb80
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - r15 = 0x00007f92d5c7e200 rip = 0x00007f92e20c85e7
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - Found by: call frame info
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - 11 libxul.so!MessageLoop::RunHandler() [message_loop.cc:df67f3dd09eae54645811dc48ac3d866025348b9 : 366]
[task 2026-02-18T02:34:03.595+00:00] 02:34:03 INFO - Found by: inlining
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - 12 libxul.so!MessageLoop::Run() [message_loop.cc:df67f3dd09eae54645811dc48ac3d866025348b9 : 348 + 0x4]
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - rbx = 0x00007f92d2a19640 rbp = 0x00007f92d2cffb50
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - rsp = 0x00007f92d2cffb30 r12 = 0x00007f92d2a19648
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - r13 = 0x0000000000000002 r14 = 0x000000000000000a
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - r15 = 0x00007f92d2cffb80 rip = 0x00007f92e204e912
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - Found by: call frame info
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - 13 libxul.so!nsThread::ThreadFunc(void*) [nsThread.cpp:df67f3dd09eae54645811dc48ac3d866025348b9 : 373 + 0x7]
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - rbx = 0x00007f92d2a19640 rbp = 0x00007f92d2cffd80
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - rsp = 0x00007f92d2cffb60 r12 = 0x00007f92d2a19648
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - r13 = 0x0000000000000002 r14 = 0x000000000000000a
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - r15 = 0x00007f92d2cffb80 rip = 0x00007f92e16a9b0f
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - Found by: call frame info
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - 14 libnspr4.so!_pt_root [ptthread.c:df67f3dd09eae54645811dc48ac3d866025348b9 : 191 + 0x6]
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - rbx = 0x00007f92d243a700 rbp = 0x00007f92d2cffdd0
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - rsp = 0x00007f92d2cffd90 r12 = 0x00007f92d2d005d8
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - r13 = 0x0000000000000002 r14 = 0x00007f92ee916900
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - r15 = 0x00007f92d2d006c0 rip = 0x00007f92f6bbd3ad
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - Found by: call frame info
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - 15 firefox-bin!set_alt_signal_stack_and_start(PthreadCreateParams*) [pthread_create_interposer.cpp:df67f3dd09eae54645811dc48ac3d866025348b9 : 81 + 0x5]
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - rbx = 0x00007f92d243a700 rbp = 0x00007f92d2cffe80
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - rsp = 0x00007f92d2cffde0 r12 = 0x00007f92d2d006c0
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - r13 = 0xffffffffffffff18 r14 = 0x00007f92d2cffdf0
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - r15 = 0x00007f92f6bbd220 rip = 0x0000564f519e931d
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - Found by: call frame info
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - 16 libc.so.6!start_thread [pthread_create.c : 447 + 0x13]
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - rbx = 0x00007f92d2d00cdc rbp = 0x00007f92d2cfff30
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - rsp = 0x00007f92d2cffe90 r12 = 0x00007f92d2d006c0
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - r13 = 0xffffffffffffff18 r14 = 0x0000000000000000
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - r15 = 0x00007fff284e1130 rip = 0x00007f92f6c61aa4
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - Found by: call frame info
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - 17 libc.so.6!__GI___clone [clone.S : 100 + 0x1]
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - rbx = 0x00007f92f6c61720 rbp = 0x0000000000000000
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - rsp = 0x00007f92d2cfff40 r12 = 0x00007f92d2d006c0
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - r13 = 0xffffffffffffff18 r14 = 0x0000000000000000
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - r15 = 0x00007fff284e1130 rip = 0x00007f92f6ceea34
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO - Found by: call frame info
[task 2026-02-18T02:34:03.596+00:00] 02:34:03 INFO -
Updated•8 months ago
|
Tier 1 failure here
Comment 3•8 months ago
•
|
||
Following is a plausible explanation. I am a bit hesitant to paper over this in MozPromise, this feels like a worker weirdness we should discuss first.
Analysis
Summary
Intermittent MOZ_DIAGNOSTIC_ASSERT(mResponseTarget->IsOnCurrentThread()) crash in MozPromise.h:628, triggered by crashtest dom/media/test/crashtests/2014861.html. Regressed by bug 2014861.
Root cause
A race between MozPromise dispatch and worker shutdown:
- Inner promises resolve on
taskQueue. WithAll(taskQueue, ...), theAllPromisealso resolves on the taskQueue and asynchronously dispatches aResolveOrRejectRunnableto the worker'sHybridEventTarget. - The worker starts shutting down. The
StrongWorkerRefcallback fires withinDoRunLoop, callingholder->DisconnectIfExists()which setsmDisconnected = true. - The worker exits
DoRunLoop, thenRunShutdownTasks()callsForgetWorkerPrivate(), which nulls outmWorkerPrivateon theHybridEventTarget. NS_ProcessPendingEvents()drains remaining events, including theResolveOrRejectRunnabledispatched in step 1.- In
DoResolveOrReject(), the thread assertion at line 628 fires before themDisconnectedearly-return at line 630, becauseWorkerEventTarget::IsOnCurrentThreadInfallible()returnsfalsewhenmWorkerPrivateis null — even though the code is running on the worker thread.
The deeper issue: WorkerEventTarget::IsOnCurrentThreadInfallible
WorkerEventTarget::IsOnCurrentThreadInfallible() conflates two meanings of "false":
- "You are on the wrong thread" (thread-safety)
- "The worker is dead" (lifecycle)
After ForgetWorkerPrivate(), it returns false unconditionally, which is incorrect for thread-identity purposes when code is still running on the worker thread (during the NS_ProcessPendingEvents cleanup phase).
Callers relying on the current behavior
All callers that branch on IsOnCurrentThread() do so from the main thread, where the result is false regardless of whether the worker is alive:
PermissionStatusSink::PermissionChangedOnMainThread()— called from main thread (MOZ_ASSERT(NS_IsMainThread())), uses!IsOnCurrentThread()to enter a branch that checksmWorkerReffor liveness. Would returnfalseregardless.StorageAccessPermissionStatus— same pattern, main-thread caller.ThreadSafeRequestHandle::~ThreadSafeRequestHandle()— if destroyed on the worker thread afterForgetWorkerPrivate,IsOnCurrentThread()lies (returns false), causing a proxy-release to a dead target withMOZ_ALWAYS_SUCCEEDS. This is arguably already a latent bug.
No caller was found that relies on IsOnCurrentThread() returning false from the worker thread as a "worker is dead" signal.
Possible fixes
-
MozPromise assertion reorder — move the
MOZ_DIAGNOSTIC_ASSERTinDoResolveOrRejectafter themDisconnectedcheck. Minimal, safe, but papers over the semantic issue inWorkerEventTarget. -
Fix
WorkerEventTarget::IsOnCurrentThreadInfallible— preserve thePRThread*inForgetWorkerPrivatesoIsOnCurrentThread()continues to answer correctly after shutdown. Fixes the problem at the source and may fix latent bugs (e.g.WorkerLoadContext), but wider blast radius.
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Assignee | ||
Comment 6•8 months ago
|
||
Hi Jens. Thanks for the detailed information about the root cause.
Calling WorkerPrivate::mWorkerHybridEventTarget::ForgetWorkerPrivate() in WorkerPrivate::RunShutdownTasks() means that any runnables dispatched to HybridEventTarget should be completed before ShutdownTasks. I think this is based on the concept that keeping a WorkerRef keeps the worker alive until you complete your shutdown. Although we should check if any runnables are on the WorkerPrivate::mWorkerHybridEventTarget at the moment, we can not do it since the runnables are dispatched to the different underlying event queues(mThread::EventQueue and mControlQueue), and some runnables are dispatched from other EventTargets, such as mWorkerControlEventTarget. It is hard to maintain the runnables/EventTarget mapping, especially when the runnable is in the PRThread's queue.
So, I still want to highlight the concept, keep the WorkerRef until your shutdown completes.
Generally, we thought MozPromiseRequestHolder::Disconnect() to prevent the execution of the corresponding resolve/reject runnable. And, the implementation of MozPromiseRequestHolder::Disconnect() achieves this by using mDisconnected within resolve/reject runnable::Run() to determine whether execution should occur. This means that MozPromiseRequestHolder::Disconnect() doesn't actually prevent the dispatching of resolve/reject runnables.
In this case, since the resolve/reject runnable is dispatched regardless, from the Worker's perspective, the entire runnable is part of shutdown of this functionality, the WorkerRef should be kept until the runnable::Run() completes. Therefore, calling MozPromiseRequestHolder::Disconnect() and releasing the WorkerRef in the WorkerRef's callback implicitly violates the design principles of WorkerRef.
So, I suggest preventing the dispatching of resolve/reject runnables. That is, before https://searchfox.org/firefox-main/rev/871325b8460362073cb2069874bef7dde3170cb2/xpcom/threads/MozPromise.h#586,607, it should be checked whether disconnection has occurred. Only in this way can it be confirmed that Disconnect() truly blocks the Resolve/Reject behavior in the target thread.
Comment 7•8 months ago
|
||
(In reply to Eden Chuang[:edenchuang] from comment #6)
Generally, we thought MozPromiseRequestHolder::Disconnect() to prevent the execution of the corresponding resolve/reject runnable. And, the implementation of MozPromiseRequestHolder::Disconnect() achieves this by using
mDisconnectedwithinresolve/reject runnable::Run()to determine whether execution should occur. This means thatMozPromiseRequestHolder::Disconnect()doesn't actually prevent the dispatching of resolve/reject runnables.
IIUC it does prevent it from dispatching to the target inside the ResolveOrRejectRunnable - we just assert on the is on target check too early. If that is all intentional on the worker side, we may just move the assertion until after the bail out (it still feels all semantically a bit weird on the worker side, though).
So, I suggest preventing the dispatching of resolve/reject runnables. That is, before https://searchfox.org/firefox-main/rev/871325b8460362073cb2069874bef7dde3170cb2/xpcom/threads/MozPromise.h#586,607, it should be checked whether disconnection has occurred. Only in this way can it be confirmed that Disconnect() truly blocks the Resolve/Reject behavior in the target thread.
I think that check is already in place inside the ResolveOrRejectRunnable / DoResolveOrReject ?
So I think if workers need to rely on that Disconnected bail out, we should just move the assertion.
| Assignee | ||
Comment 8•8 months ago
|
||
(In reply to Jens Stutte [:jstutte] from comment #7)
(In reply to Eden Chuang[:edenchuang] from comment #6)
Generally, we thought MozPromiseRequestHolder::Disconnect() to prevent the execution of the corresponding resolve/reject runnable. And, the implementation of MozPromiseRequestHolder::Disconnect() achieves this by using
mDisconnectedwithinresolve/reject runnable::Run()to determine whether execution should occur. This means thatMozPromiseRequestHolder::Disconnect()doesn't actually prevent the dispatching of resolve/reject runnables.IIUC it does prevent it from dispatching to the target inside the
ResolveOrRejectRunnable- we just assert on the is on target check too early. If that is all intentional on the worker side, we may just move the assertion until after the bail out (it still feels all semantically a bit weird on the worker side, though).
No, I mean ResolveOrRejectRunnable probably should not be dispatched after Disconnect() is called.
The codes you linked is just an early return in the execution of ResolveOrRejectRunnable::Run(), ThenValueBase::DoResolveOrReject()'s only caller is ResolveOrRejectRunnable::Run(). So when you get the if statement in ThenValueBase::DoResolveOrReject(), that means the runnable is already dispatched to the target and in the execution.
Following, I am going to explain why I say ThenValueBase::ResolveOrRejectRunnable could still be dispatched after ThenValueBase::Disconnect() is called.
When ThenValue::Disconnect() is called, ThenValueBase::Disconnect() is called to set Request::mDisconnected as true.
Then when the promise get resolved or rejected at some time passed after Disconnect(), MozPromise::Private::Resolve() or MozPromise::Private::Reject() is called.
Resolve() or Reject() will call MozPromise::Private::DispatchAll() to make the ThenValueBase::Dispatch() be called to dispatch the resolve or reject behavior to the target. In ThenValueBase::Dispatch(), you can see ResolveOrRejectRunnable is created and dispatched to the target thread no matter what the Request::mDisconnected value is.
Since the WorkerRef is released between ThenValue::Disconnect() and MozPromise::Private::Resolve()/Reject(), Worker treats the functionality shutdown had already completed, and Worker can continue its own shutdown. If unfortunately MozPromise::Private::Resolve()/Reject() is called in some bad moment, I mean the Worker is still in "Canceling" status, and the ResolveOrRejectRunnable is dispatched to the Worker thread. and more worse its execution is after WorkerPrivate::RunShutdownTasks(), then we hit the assertion in ResolveOrRejectRunnable::Run().
That why I say we should treat ResolveOrRejectRunnable::Run() as a part of functionality shutdown, and must have a StrongWorkerRef to protect its execution even though we set Request::mDisconnected as true to make it do nothing.
Here also something I need to highlight in MediaCapabilities.cpp.
As you can see that we create a StrongWorkerRef for the promises resolve/reject, and only call MozPromiseRequestHolder::Disconnect() in the WorkerRef's callback. It looks like we don't release the WorkerRef between ThenValue::Disconnect() and MozPromise::Private::Resolve()/Reject(). However, it is not true. This is because we just keep the WorkerRef in the ResolveFunction, unfortunately, when ThanValue::Disconnect() is called, the Resolve/Reject function could be reset and make WorkerRef be released implicitly. This is not easy to be noticed during the implementation.
So, I think the easiest fix is to make MediaCapabilities hold WorkerRef as a member variable, not just keep it in the Resolve lambda, which guarantees the WorkerRef will not be released by ThenValue::Disconnect() implicitly.
But since this could happen in other places, the best fix is to not dispatch ResolveOrRejectRunnable to the target if Request::mDisconnected is true. This would make the functionality shutdown completes when Disconnect() is called.
Hope this explains clearly.
Comment 9•8 months ago
|
||
The functionality of Disconnect is a bit weird, but we definitely need at least the current behaviour of checking if we've disconnected in the runnable (as otherwise an in-flight runnable might fire the event). I'm guessing that the check wasn't added in the dispatching site because it seemed redundant.
I don't think adding a check at the dispatch site will actually fully prevent this issue, as the disconnect can still happen after the dispatch but before the runnable is executed on the target thread.
I think that whatever event target you're using for worker stuff here is probably buggy. It is generally assumed that the following does not assert, and it sounds like in this situation, that call would be failing right now:
eventTarget->Dispatch(NS_NewRunnableFunction("", [eventTarget] { MOZ_ASSERT(eventTarget->IsOnCurrentThread()); }));
Overall my intuition is saying that WorkerTargetThread::IsOnCurrentThread should be changed to no longer take the lifecycle of the worker thread into account if it is still executing runnables which were dispatched to it.
Updated•8 months ago
|
| Assignee | ||
Comment 10•8 months ago
•
|
||
(In reply to Nika Layzell [:nika] (ni? for response) from comment #9)
The functionality of
Disconnectis a bit weird, but we definitely need at least the current behaviour of checking if we've disconnected in the runnable (as otherwise an in-flight runnable might fire the event). I'm guessing that the check wasn't added in the dispatching site because it seemed redundant.
I agree, so I didn't say we should remove the mDisconnected checking in the ResolveOrRejectRunnable::Run().
But I wonder: if mDisconnected is true before dispatching ResolveOrRejectRunnable, why do we still dispatch a ResolveOrRejectRunnable that almost does nothing in the target thread?
I don't think adding a check at the dispatch site will actually fully prevent this issue, as the disconnect can still happen after the dispatch but before the runnable is executed on the target thread.
Keep WorkerRef, this issue would be fixed.
I think that whatever event target you're using for worker stuff here is probably buggy. It is generally assumed that the following does not assert, and it sounds like in this situation, that call would be failing right now:
eventTarget->Dispatch(NS_NewRunnableFunction("", [eventTarget] { MOZ_ASSERT(eventTarget->IsOnCurrentThread()); }));Overall my intuition is saying that
WorkerTargetThread::IsOnCurrentThreadshould be changed to no longer take the lifecycle of the worker thread into account if it is still executing runnables which were dispatched to it.
Yes, I also agree this is a bit weird. For Worker, we probably should have a better way to check that WorkerHybridEventTarget should be empty after WorkerPrivate::RunShutdownTasks(), instead of calling WorkerHybridEventTarget::ForgetWorkerPrivate() to invalidate all dispatched runnables. But currently, I will say it could be done in another bug.
As I said, we can move WorkerRef as a member variable of MediaCapabilities in this bug. That will use the WorkerRef correctly, keeping the worker alive until the corresponding behavior completes, whether or not ResolveOrRejectRunnable is dispatched.
How do you think about?
Comment 11•8 months ago
|
||
(In reply to Eden Chuang[:edenchuang] from comment #10)
I agree, so I didn't say we should remove the mDisconnected checking in the ResolveOrRejectRunnable::Run().
But I wonder: if mDisconnected is true before dispatching ResolveOrRejectRunnable, why do we still dispatch a ResolveOrRejectRunnable that almost does nothing in the target thread?
mDisconnected is a non-atomic bool. As it's implemented right now, it's not safe to read it from any thread other than the target thread, which is why it's only read after dispatching to the target thread.
I don't think adding a check at the dispatch site will actually fully prevent this issue, as the disconnect can still happen after the dispatch but before the runnable is executed on the target thread.
Keep WorkerRef, this issue would be fixed.
I still think that there's a serious issue with WorkerEventTarget if it can enter a state where you can dispatch to it, and the dispatched runnable is run, but upon running IsOnCurrentThread() is false, and I think that should be fixed. I don't think that this would fix things, as we're already failing the dispatch in that situation.
Looking at the implementation, WorkerEventTarget stops allowing dispatches after mWorkerPrivate is cleared (https://searchfox.org/firefox-main/rev/4bc9c2f9b62e7cb44894d581c8171edbf0f7e27f/dom/workers/WorkerEventTarget.cpp#170-172), meaning that the dispatch is happening before ForgetWorkerPrivate has been called, and is running on the target thread after mWorkerPrivate has been cleared (https://searchfox.org/firefox-main/rev/4bc9c2f9b62e7cb44894d581c8171edbf0f7e27f/dom/workers/WorkerEventTarget.cpp#264-266).
To my understanding this means that whatever runnables are being dispatched are not keeping a WorkerRef which would keep the worker alive while the message is in flight (otherwise we wouldn't be calling ForgetWorkerPrivate - there's also no reference to WorkerRef in ExternalRunnableWrapper). Because of that I don't think that making mDisconnected atomic and reading it from the dispatching thread will fix anything here.
Yes, I also agree this is a bit weird. For Worker, we probably should have a better way to check that WorkerHybridEventTarget should be empty after WorkerPrivate::RunShutdownTasks(), instead of calling WorkerHybridEventTarget::ForgetWorkerPrivate() to invalidate all dispatched runnables. But currently, I will say it could be done in another bug.
As I said, we can move WorkerRef as a member variable of MediaCapabilities in this bug. That will use the WorkerRef correctly, keeping the worker alive until the corresponding behavior completes, whether or not ResolveOrRejectRunnable is dispatched.
How do you think about?
Maybe that could work (not following the specific MediaCapabilities logic here), but I still think that the WorkerEventTarget type is breaking nsIEventTarget expectations, and that it is likely the "real" source of the bug here.
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Assignee | ||
Comment 15•8 months ago
|
||
Okay, I think I understand what you're trying to say. I'll try to provide a patch that makes HybridEventTarget follow the expectations of nsIEventTarget. That is, when a runnable is sent to HybridEventTarget, HybridEventTarget::IsOnCurrentThread() will always be "true" while the runnable executes.
However, I want to emphasize that, although the patch makes HybridEventTarget meet nsIEventTarget's expectations, it only prevents the Assertion from issuing warnings. It doesn't mean the problem is fixed. Because for Worker, a runnable dispatched to HybridEventTarget must absolutely not be executed after WorkerPrivate::RunShundownTasks(). Otherwise, it will only lead to unpredictable behavior, such as UAF, memory leaks, or shutdown hangs, because the Worker cannot guarantee that the resources used by the runnable. No one holding a WorkerRef means the Worker can safely release the resources it owns.
And the only way to ensure the resources are alive is by holding the WorkerRef until the runnable finishes execution. Therefore, MediaCapabilities still need to hold WorkerRef as a member variable.
Comment 16•8 months ago
•
|
||
I agree that MediaCapabilities should hold its WorkerRef as a member, and also that fixing HybridEventTarget's IsOnCurrentThread is the right thing to do.
However we might lose some (pretty random) visibility for "dangling" promises like this. Stepping back and looking at bug 1979268 comment 0 — we already have nsIEventTarget::RegisterShutdownTask and WorkerPrivate implements it. RunShutdownTasks() fires the registered tasks right before ForgetWorkerPrivate(), which is exactly the point where we'd want to handle dangling promises.
What if MozPromise::ThenValue registered a shutdown task with mResponseTarget (when the target supports it) that rejects the promise? The shutdown task would fire before ForgetWorkerPrivate(), while the worker is still in a good state, giving the consumer a chance to handle the situation. This would be a general safety net: any MozPromise targeting a worker (or any event target that shuts down) would auto-reject rather than relying on each consumer to manually hold a WorkerRef and disconnect in their shutdown callback.
This would probably happen in a different bug, FWIW.
Updated•8 months ago
|
| Assignee | ||
Comment 18•8 months ago
|
||
That's what I want to improve the HybridEventTarget. So it would not just let HybridEventTarget follow nsIEventTarget's expectation.
By tracking the dispatched runnables on HybridEventTarget, a more specific judgment is made in WorkerPrivate::DoRunLoop() to ensure that all dispatched HybridEventTargets are executed before entering "Killing" status.
That should be fixed in most cases for HybridEventTarget. And the specific runnable tracking on HybridEventTarget should warn out if someone tries to dispatch a runnable on HybridEventTarget but does not hold a WorkerRef to keep the Worker alive, such that we can get the debug information be more specific about who violates the Worker's playing rules.
Updated•8 months ago
|
Comment 20•8 months ago
|
||
I think that the approach as you have it described right now is reasonable. The runnable dispatched in this particular case is probably OK (as it won't do anything with the worker's resources after being dispatched, as it has been discarded so will early return early in the runnable), but I think it makes sense to add these extra assertions and make sure that HybridEventTarget is not being dispatched runnables at the wrong times and without holding WorkerRef.
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
Comment 40•6 months ago
|
||
Three more intermittent bugs have been filed with the same root cause (WorkerEventTarget::IsOnCurrentThread() returning false during worker shutdown while dispatched runnables are still executing):
- bug 2021424 —
MozPromise<CopyableTArray<MediaCapabilitiesInfo>, MediaResult, true>(Mac amd64, content process, DOM Worker) - bug 2031366 —
MozPromise<long, IOUtils::IOError, true>(Linux amd64, content process, DOM Worker) - bug 2032312 —
MozPromise<OSInfo, nsresult, 0>(Windows x86, content process, DOM Worker)
All three share the identical stack shape: ExternalRunnableWrapper::WorkerRun → ResolveOrRejectRunnable::Run → DoResolveOrReject assertion. The different MozPromise template types in the signatures are ICF (Identical Code Folding) artifacts — the Mac 64-bit crash in bug 2021424 is the most reliable since ICF is less aggressive there, and both frames agree on MediaCapabilitiesInfo.
They appear on different tests (dom/media/test/crashtests/2014861.html and 2016504.html), confirming the worker is unrelated to the specific test.
Comment 43•6 months ago
|
||
Copying crash signatures from duplicate bugs.
Comment 44•6 months ago
|
||
Copying crash signatures from duplicate bugs.
| Comment hidden (Intermittent Failures Robot) |
Updated•6 months ago
|
Comment 47•6 months ago
|
||
Eden, what's the status here? I assume per comment 18 / comment 20 you're looking at this?
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Assignee | ||
Comment 66•6 months ago
|
||
| Comment hidden (Intermittent Failures Robot) |
Updated•6 months ago
|
Updated•6 months ago
|
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
Comment 73•5 months ago
|
||
Comment 74•5 months ago
|
||
| bugherder | ||
Updated•5 months ago
|
| Comment hidden (Intermittent Failures Robot) |
| Assignee | ||
Comment 77•5 months ago
|
||
Currently, we have no good way to track the relationship between StrongWorkerRef and WorkerThreadRunnables for shutdown to ensure there is a StrongWorkerRef for the WorkerThreadRunnable dispatching and execution during Worker's shutdown.
This patch is a workaround for the general situation of performing shutdown work on the Worker thread without holding or unexpectedly releasing the StrongWorkerRef.
The idea of this patch is that the WorkerThreadRunnable dispatched to the WorkerEventTarget should be executed before breaking the connection between the WorkerEventTarget and the WorkerPrivate, especially for the Hybrid one. So this patch cleans up the dispatched WorkerThreadRunnables during the Worker state transition, by executing runnables after switching to the "Killing" state.
Because once the Worker is in "Killing," dispatching WorkerThreadRunnables will fail, the Worker will not hang by continuously runnable dispatching.
The following are the detailed steps of the patch.
When the Worker is in "Canceling," and there are no WorkerRefs, Timeouts, ChildWorkers, and pending runnables, the Worker transitions to the "Killing" state.
After the Worker is in "Killing", if runnables are dispatched in other threads between step 1 and step 2, execute the dispatched runnables.
Calling WorkerGlobalScopeBase::NoteShuttingDown() to shut down the StorageManager and releasing WorkerPrivate::mRemoteWorkerNonLifeCycleOpController, what we perform in WorkerPrivate::NotifyInternal() for "Killing" state.
The patch is a workaround because it can not perfectly handle the case of async shutdown behavior without StrongWorkerRef.
Original Revision: https://phabricator.services.mozilla.com/D299723
Updated•5 months ago
|
Comment 78•5 months ago
|
||
firefox-beta Uplift Approval Request
- User impact if declined/Reason for urgency: User could meet content process crash caused by MOZ_DIGNOSTIC_ASSERT when using Workers.
- Code covered by automated testing?: unknown
- Fix verified in Nightly?: no
- Needs manual QE testing?: no
- Steps to reproduce for manual QE testing:
- Risk associated with taking this patch: low
- Explanation of risk level: This patch provides a workaround for cleaning the dispatched runnables on the Worker when the Worker gets into the Killing state.
This is a mitigation method when someone else sends a runnable to a Worker, but does not hold a WorkerRef.
This should not be high-risk.
- String changes made/needed?: No
- Is Android affected?: yes
| Assignee | ||
Updated•5 months ago
|
Comment 80•5 months ago
|
||
Copying crash signatures from duplicate bugs.
Updated•5 months ago
|
Updated•5 months ago
|
Comment 81•5 months ago
|
||
| uplift | ||
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
| Comment hidden (Intermittent Failures Robot) |
Description
•