Assertion failure: false (This should not happen, setting the value should always work), at /builds/worker/workspace/obj-build/dist/include/mozilla/dom/AudioParam.h:69
Categories
(Core :: Web Audio, defect)
Tracking
()
People
(Reporter: jkratzer, Assigned: karlt)
References
(Blocks 1 open bug, Regression)
Details
(Keywords: assertion, regression, testcase)
Attachments
(9 files)
6.61 KB,
application/zip
|
Details | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review | |
48 bytes,
text/x-phabricator-request
|
Details | Review |
Testcase found while fuzzing mozilla-central rev 1c01cb995fc9 (built with --enable-debug --enable-fuzzing).
The testcase is not entirely reliable and may require several attempts before it reproduces.
Testcase can be reproduced using the following commands:
$ pip install fuzzfetch grizzly-framework
$ python -m fuzzfetch --build 1c01cb995fc9 --debug --fuzzing -n mc-debug
$ python -m grizzly.replay --xvfb ./mc-debug/firefox ./testcase.zip --no-harness --repeat 10
Unfortunately, I have not yet been able to get a symbolized stack trace for this bug.
Reporter | ||
Comment 1•3 years ago
|
||
A pernosco session for this bug can be found at the following URL:
https://pernos.co/debug/8LMFOlcqyn5f-242ObShCw/index.html
Assignee | ||
Comment 2•3 years ago
|
||
ValidateEvent()
fails due to an existing SetValueCurve
.
The AudioParam.value
setter is not expecting that.
https://webaudio.github.io/web-audio-api/#dom-audioparam-value says
Setting this attribute has the effect of assigning the requested value to the [[current value]] slot, and calling the setValueAtTime() method with the current AudioContext's currentTime and [[current value]]. Any exceptions that would be thrown by setValueAtTime() will also be thrown by setting this attribute.
https://webaudio.github.io/web-audio-api/#AudioParam has
Similarly a NotSupportedError exception MUST be thrown if any automation method is called at a time which is contained in [T,T+D), T being the time of the curve and D its duration.
Similarly https://webaudio.github.io/web-audio-api/#dom-pannernode-setposition
Consequently, if any of the positionX, positionY, and positionZ AudioParams have an automation curve set using setValueCurveAtTime() at the time this method is called, a NotSupportedError MUST be thrown.
Assignee | ||
Comment 3•3 years ago
|
||
This probably dates back to https://hg.mozilla.org/mozilla-central/rev/22f39dd335cc5b62373e74ebbf07accd28208281
Updated•3 years ago
|
Assignee | ||
Comment 4•3 years ago
|
||
Assignee | ||
Comment 5•3 years ago
|
||
Updated•3 years ago
|
Assignee | ||
Comment 6•3 years ago
|
||
when the setter should not throw because there are no events in the timeline
and the time is known valid.
This will allow us to make SetValue() throw when it conflicts with a
setValueCurveAtTime() curve.
Depends on D113937
Assignee | ||
Comment 7•3 years ago
|
||
Depends on D113938
Assignee | ||
Comment 8•3 years ago
|
||
Depends on D113939
Assignee | ||
Comment 9•3 years ago
|
||
Depends on D113940
Assignee | ||
Comment 10•3 years ago
|
||
The large numbers were to test
https://hg.mozilla.org/integration/mozilla-inbound/rev/084b01d1b6b3
but were ignored after
https://hg.mozilla.org/integration/mozilla-inbound/rev/8799895ca858
Depends on D113941
Assignee | ||
Comment 11•3 years ago
|
||
This is similar to what WebIDL bindings would do for us when the AudioParam setters are called.
setPosition() "is equivalent to setting positionX.value, positionY.value, and positionZ.value
attribute directly with the x, y and z parameters, respectively."
https://webaudio.github.io/web-audio-api/#dom-pannernode-setposition
Depends on D113942
Assignee | ||
Comment 12•3 years ago
|
||
Depends on D113943
Updated•3 years ago
|
Comment 13•3 years ago
|
||
Pushed by ktomlinson@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/20970c1d7f91 clarify that AudioEventTimeline::ValidateEvent() has no side effects r=padenot https://hg.mozilla.org/integration/autoland/rev/70e615eb295d add AudioParam::SetInitialValue() for use in AudioNode creation r=padenot https://hg.mozilla.org/integration/autoland/rev/fd926488406a throw when attempting to set AudioParam value during setValueCurveAtTime() interval r=padenot,emilio https://hg.mozilla.org/integration/autoland/rev/fba8c6d431c5 remove unused variables r=padenot https://hg.mozilla.org/integration/autoland/rev/aff5404e2d74 Test AudioParam value setter throws during setValueCurveAtTime() interval r=padenot https://hg.mozilla.org/integration/autoland/rev/a08e66f10499 switch from PannerNode.setPosition() parameters close to DBL_MAX to FLT_MAX r=padenot https://hg.mozilla.org/integration/autoland/rev/287e7da8b0d5 throw when PannerNode param value a not in the range of float r=padenot https://hg.mozilla.org/integration/autoland/rev/79b910105bf0 Test PannerNode.setPosition() throws with parameter out of range of float r=padenot
Created web-platform-tests PR https://github.com/web-platform-tests/wpt/pull/28804 for changes under testing/web-platform/tests
Comment 15•3 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/20970c1d7f91
https://hg.mozilla.org/mozilla-central/rev/70e615eb295d
https://hg.mozilla.org/mozilla-central/rev/fd926488406a
https://hg.mozilla.org/mozilla-central/rev/fba8c6d431c5
https://hg.mozilla.org/mozilla-central/rev/aff5404e2d74
https://hg.mozilla.org/mozilla-central/rev/a08e66f10499
https://hg.mozilla.org/mozilla-central/rev/287e7da8b0d5
https://hg.mozilla.org/mozilla-central/rev/79b910105bf0
Upstream PR merged by moz-wptsync-bot
Updated•3 years ago
|
Description
•