Closed Bug 2017517 Opened 8 months ago Closed 5 months ago

Intermittent Assertion failure: mResponseTarget->IsOnCurrentThread(), at /builds/worker/workspace/obj-build/dist/include/mozilla/MozPromise.h:628

Categories

(Core :: XPCOM, defect, P5)

defect

Tracking

()

RESOLVED FIXED
153 Branch
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 - 
Regressed by: 2014861

Tier 1 failure here

Summary: Intermittent TV Assertion failure: mResponseTarget->IsOnCurrentThread(), at /builds/worker/workspace/obj-build/dist/include/mozilla/MozPromise.h:628 → Intermittent Assertion failure: mResponseTarget->IsOnCurrentThread(), at /builds/worker/workspace/obj-build/dist/include/mozilla/MozPromise.h:628

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:

  1. Inner promises resolve on taskQueue. With All(taskQueue, ...), the AllPromise also resolves on the taskQueue and asynchronously dispatches a ResolveOrRejectRunnable to the worker's HybridEventTarget.
  2. The worker starts shutting down. The StrongWorkerRef callback fires within DoRunLoop, calling holder->DisconnectIfExists() which sets mDisconnected = true.
  3. The worker exits DoRunLoop, then RunShutdownTasks() calls ForgetWorkerPrivate(), which nulls out mWorkerPrivate on the HybridEventTarget.
  4. NS_ProcessPendingEvents() drains remaining events, including the ResolveOrRejectRunnable dispatched in step 1.
  5. In DoResolveOrReject(), the thread assertion at line 628 fires before the mDisconnected early-return at line 630, because WorkerEventTarget::IsOnCurrentThreadInfallible() returns false when mWorkerPrivate is 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:

No caller was found that relies on IsOnCurrentThread() returning false from the worker thread as a "worker is dead" signal.

Possible fixes

  1. MozPromise assertion reorder — move the MOZ_DIAGNOSTIC_ASSERT in DoResolveOrReject after the mDisconnected check. Minimal, safe, but papers over the semantic issue in WorkerEventTarget.

  2. Fix WorkerEventTarget::IsOnCurrentThreadInfallible — preserve the PRThread* in ForgetWorkerPrivate so IsOnCurrentThread() continues to answer correctly after shutdown. Fixes the problem at the source and may fix latent bugs (e.g. WorkerLoadContext), but wider blast radius.

Flags: needinfo?(alwu) → needinfo?(echuang)

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.

Flags: needinfo?(echuang)

(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 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.

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.

Flags: needinfo?(echuang)

(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 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.

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.

Flags: needinfo?(echuang) → needinfo?(jstutte)

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.

Flags: needinfo?(echuang)
Flags: needinfo?(jstutte)

(In reply to Nika Layzell [:nika] (ni? for response) from comment #9)

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 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::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.

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?

Flags: needinfo?(echuang) → needinfo?(nika)

(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.

Flags: needinfo?(nika) → needinfo?(echuang)

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.

Flags: needinfo?(nika)
Flags: needinfo?(jstutte)
Flags: needinfo?(echuang)

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.

Flags: needinfo?(jstutte)
See Also: → 1979268

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.

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.

Flags: needinfo?(nika)

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.

Duplicate of this bug: 2032312
Duplicate of this bug: 2031366

Copying crash signatures from duplicate bugs.

Crash Signature: [@ mozilla::MozPromise<OSInfo,nsresult,0>::ThenValueBase::DoResolveOrReject]

Copying crash signatures from duplicate bugs.

Crash Signature: [@ mozilla::MozPromise<OSInfo,nsresult,0>::ThenValueBase::DoResolveOrReject] → [@ mozilla::MozPromise<OSInfo,nsresult,0>::ThenValueBase::DoResolveOrReject] [@ mozilla::MozPromise<long, mozilla::IOUtils::IOError, true>::ThenValueBase::DoResolveOrReject]
Blocks: 2032490
Crash Signature: [@ mozilla::MozPromise<OSInfo,nsresult,0>::ThenValueBase::DoResolveOrReject] [@ mozilla::MozPromise<long, mozilla::IOUtils::IOError, true>::ThenValueBase::DoResolveOrReject] → [@ mozilla::MozPromise<OSInfo,nsresult,0>::ThenValueBase::DoResolveOrReject] [@ mozilla::MozPromise<long, mozilla::IOUtils::IOError, true>::ThenValueBase::DoResolveOrReject]
Duplicate of this bug: 2032721

Eden, what's the status here? I assume per comment 18 / comment 20 you're looking at this?

Flags: needinfo?(echuang)
Blocks: 2005868
Assignee: nobody → echuang
Status: NEW → ASSIGNED
Attachment #9585131 - Attachment description: WIP: Bug 2017517 - Cleaning dispatched WorkerRunnables first after Worker switches to "Killing" state. r=asuth → Bug 2017517 - Cleaning dispatched WorkerRunnables first after Worker switches to "Killing" state. r=asuth
Pushed by echuang@mozilla.com: https://github.com/mozilla-firefox/firefox/commit/913af0f6df51 https://hg.mozilla.org/integration/autoland/rev/ba77a45a8172 Cleaning dispatched WorkerRunnables first after Worker switches to "Killing" state. r=asuth,dom-worker-reviewers
Status: ASSIGNED → RESOLVED
Closed: 5 months ago
Resolution: --- → FIXED
Target Milestone: --- → 153 Branch

Please add a Beta uplift request to this bug.

Flags: needinfo?(echuang)

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

Attachment #9589670 - Flags: approval-mozilla-beta?

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
Flags: needinfo?(echuang)
Duplicate of this bug: 2038615

Copying crash signatures from duplicate bugs.

Crash Signature: [@ mozilla::MozPromise<OSInfo,nsresult,0>::ThenValueBase::DoResolveOrReject] [@ mozilla::MozPromise<long, mozilla::IOUtils::IOError, true>::ThenValueBase::DoResolveOrReject] → [@ mozilla::MozPromise<OSInfo,nsresult,0>::ThenValueBase::DoResolveOrReject] [@ mozilla::MozPromise<long, mozilla::IOUtils::IOError, true>::ThenValueBase::DoResolveOrReject] [@ mozilla::MozPromise<nsTArray<mozilla::net::Http3ConnectionStatsParams>, mozil…
Attachment #9589670 - Flags: approval-mozilla-beta? → approval-mozilla-beta+
See Also: → 1824294
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: