Crash [@ Aborted]
Categories
(Core :: DOM: Core & HTML, defect)
Tracking
()
Tracking | Status | |
---|---|---|
firefox-esr115 | --- | unaffected |
firefox-esr128 | --- | fixed |
firefox128 | --- | wontfix |
firefox129 | --- | fixed |
firefox130 | --- | verified |
People
(Reporter: jkratzer, Assigned: vhilla)
References
(Blocks 1 open bug, Regression)
Details
(Keywords: pernosco, regression, testcase, Whiteboard: [bugmon:bisected,confirmed], [wptsync upstream])
Crash Data
Attachments
(4 files, 2 obsolete files)
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
phab-bot
:
approval-mozilla-beta+
|
Details | Review |
48 bytes,
text/x-phabricator-request
|
phab-bot
:
approval-mozilla-esr128+
|
Details | Review |
247 bytes,
text/html
|
Details |
Testcase found while fuzzing mozilla-central rev 9abfb7fcb613 (built with: --enable-debug --enable-fuzzing).
Testcase can be reproduced using the following commands:
$ pip install fuzzfetch grizzly-framework --upgrade
$ python -m fuzzfetch --build 9abfb7fcb613 --debug --fuzzing -n firefox
$ python -m grizzly.replay.bugzilla ./firefox/firefox <bugid>
[@ Aborted]
==1045767==ERROR: UndefinedBehaviorSanitizer: SEGV on unknown address 0x0000000000a0 (pc 0x70274bb5f5fe bp 0x70272e12fdc0 sp 0x70272e12fd40 T1045819)
==1045767==The signal is caused by a READ memory access.
==1045767==Hint: address points to the zero page.
#0 0x70274bb5f5fe in Aborted /dom/abort/AbortSignal.cpp:31:48
#1 0x70274bb5f5fe in mozilla::dom::AbortSignal::Any(mozilla::dom::GlobalObject&, mozilla::dom::Sequence<mozilla::OwningNonNull<mozilla::dom::AbortSignal>> const&) /dom/abort/AbortSignal.cpp:296:9
#2 0x70274c15f08e in mozilla::dom::AbortSignal_Binding::any(JSContext*, unsigned int, JS::Value*) /builds/worker/workspace/obj-build/dom/bindings/./AbortSignalBinding.cpp:179:57
#3 0x7027503ff6c4 in CallJSNative(JSContext*, bool (*)(JSContext*, unsigned int, JS::Value*), js::CallReason, JS::CallArgs const&) /js/src/vm/Interpreter.cpp:491:13
#4 0x7027503feeaf in js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) /js/src/vm/Interpreter.cpp:585:12
#5 0x702750ebe836 in js::jit::DoCallFallback(JSContext*, js::jit::BaselineFrame*, js::jit::ICFallbackStub*, unsigned int, JS::Value*, JS::MutableHandle<JS::Value>) /js/src/jit/BaselineIC.cpp:1670:10
#6 0x17cdab5bca5e ([anon:js-executable-memory]+0xba5e)
UndefinedBehaviorSanitizer can not provide additional info.
SUMMARY: UndefinedBehaviorSanitizer: SEGV /dom/abort/AbortSignal.cpp:31:48 in Aborted
==1045767==ABORTING
Reporter | ||
Comment 1•1 year ago
|
||
Updated•1 year ago
|
Comment 3•1 year ago
|
||
Verified bug as reproducible on mozilla-central 20240717212306-e2109b806cd9.
The bug appears to have been introduced in the following build range:
Start: 2437c2ca5bec35fe4ab02eb938e0e02457cd079b (20240123142542)
End: f3efca74da0f43269bd8ac07e2a5d27e89c4d7c3 (20240123145016)
Pushlog: https://hg.mozilla.org/integration/autoland/pushloghtml?fromchange=2437c2ca5bec35fe4ab02eb938e0e02457cd079b&tochange=f3efca74da0f43269bd8ac07e2a5d27e89c4d7c3
Comment 4•1 year ago
|
||
Bug 1830781 is where AbortSignal.any() was implemented, and the test case includes that, so that seems like a likely regressor.
Comment 5•1 year ago
|
||
Set release status flags based on info from the regressing bug 1830781
:vhilla, since you are the author of the regressor, bug 1830781, could you take a look?
For more information, please visit BugBot documentation.
Updated•1 year ago
|
Comment 6•1 year ago
|
||
Successfully recorded a pernosco session. A link to the pernosco session will be added here shortly.
Assignee | ||
Comment 8•1 year ago
|
||
Here is a simplified test case
function test() {
let controller = new AbortController()
let signal = AbortSignal.any([controller.signal])
setInterval(async () => {
AbortSignal.any([signal])
console.log("step")
}, 100)
}
test()
The closure keeps signal
alive, but not controller
. After several intervals, controller
is garbage collected and thus the source signal of signal
is null.
I think we can simply check here for sourceSignal
to be null.
I understand the spec as source signals being weak references. Afaik nothing ensures the source signal is not garbage collected before the dependent signals are. The AbortSignal::Any
algorithm does not check for the source signals to be null. Maybe this is a spec issue?
Assignee | ||
Comment 9•1 year ago
|
||
Updated•1 year ago
|
Comment 10•1 year ago
|
||
Comment 12•1 year ago
|
||
bugherder |
Updated•1 year ago
|
Comment 14•1 year ago
|
||
Verified bug as fixed on rev mozilla-central 20240722214643-ac4a1f84adfa.
Removing bugmon keyword as no further action possible. Please review the bug and re-add the keyword for further analysis.
Comment 15•1 year ago
|
||
The patch landed in nightly and beta is affected.
:vhilla, is this bug important enough to require an uplift?
- If yes, please nominate the patch for beta approval.
- If no, please set
status-firefox129
towontfix
.
For more information, please visit BugBot documentation.
Assignee | ||
Comment 16•1 year ago
|
||
Original Revision: https://phabricator.services.mozilla.com/D217233
Updated•1 year ago
|
Assignee | ||
Comment 17•1 year ago
|
||
Original Revision: https://phabricator.services.mozilla.com/D217233
Updated•1 year ago
|
Assignee | ||
Updated•1 year ago
|
Assignee | ||
Comment 18•1 year ago
|
||
Assignee | ||
Comment 19•1 year ago
|
||
Assignee | ||
Updated•1 year ago
|
Comment 20•1 year ago
|
||
beta Uplift Approval Request
- User impact if declined: small chance this crash starts appearing in the wild
- Code covered by automated testing: yes
- Fix verified in Nightly: yes
- Needs manual QE test: no
- Steps to reproduce for manual QE testing: open attached test case, wait around 10 seconds for tab to crash
- Risk associated with taking this patch: minimal
- Explanation of risk level: patch only adds a null check
- String changes made/needed: none
- Is Android affected?: yes
Comment 21•1 year ago
|
||
esr128 Uplift Approval Request
- User impact if declined: small chance this crash starts appearing in the wild
- Code covered by automated testing: yes
- Fix verified in Nightly: yes
- Needs manual QE test: no
- Steps to reproduce for manual QE testing: open attached test case, wait around 10 seconds for tab to crash
- Risk associated with taking this patch: minimal
- Explanation of risk level: patch only adds a null check
- String changes made/needed: none
- Is Android affected?: yes
Updated•1 year ago
|
Updated•1 year ago
|
Comment 22•1 year ago
|
||
uplift |
Updated•1 year ago
|
Updated•1 year ago
|
Comment 23•1 year ago
|
||
uplift |
Description
•