Cannot Join Audio in Zoom calls in Nightly
Categories
(Core :: Web Audio, defect, P1)
Tracking
()
Tracking | Status | |
---|---|---|
firefox-esr68 | --- | unaffected |
firefox-esr78 | --- | unaffected |
firefox79 | --- | unaffected |
firefox80 | --- | unaffected |
firefox81 | + | fixed |
People
(Reporter: mconley, Assigned: karlt)
References
(Regression)
Details
(Keywords: regression)
Attachments
(4 files)
17:46.92 INFO: No more integration revisions, bisection finished.
17:46.92 INFO: Last good revision: 8ba557eb2370b63210e08a1f5f75077aa5b861e1
17:46.92 INFO: First bad revision: c48293a61cbf5d6ee8f94719670605281b549702
17:46.92 INFO: Pushlog:
https://hg.mozilla.org/integration/autoland/pushloghtml?fromchange=8ba557eb2370b63210e08a1f5f75077aa5b861e1&tochange=c48293a61cbf5d6ee8f94719670605281b549702
STR:
- Join a Zoom call using the web interface
- Once you have entered the room, click on "Join Audio" in the bottom left corner
ER:
The WebRTC permission panel should appear asking which microphone device you'd like to share.
AR:
No panel appears, so sharing the microphone is not possible.
Reporter | ||
Comment 1•5 years ago
|
||
[Tracking Requested - why for this release]:
This seems like something we want to make sure we get fixed before 81 goes out the door, since so many people are video conferencing for work these days.
Comment 2•5 years ago
|
||
Karl, the regression range for this points at bug 1655544 - does that make sense to you?
Assignee | ||
Comment 3•5 years ago
|
||
Thank you for narrowing this down.
In step 2, I needed to attempt to "Join Audio by Computer".
This is triggered by constructing an object of content-JS-extended AudioWorkletNode
class when AudioParams
are registered on the node.
Assertion failure: givenProto == reflectorProto (How are we supposed to change the proto now?), at /home/karl/moz/dev/dom/bindings/BindingUtils.cpp:3960
#7 0x00007f064bb78879 in mozilla::dom::binding_detail::AssertReflectorHasGivenProto(JSContext*, JSObject*, JS::Handle<JSObject*>)
(aCx=0x7f063c62f000, aReflector=0x1eb5092341f0, aGivenProto=...)
at /home/karl/moz/dev/dom/bindings/BindingUtils.cpp:3959
#8 0x00007f064a8027e9 in mozilla::dom::binding_detail::DoGetOrCreateDOMReflector<mozilla::dom::AudioWorkletNode, (mozilla::dom::binding_detail::GetOrCreateReflectorWrapBehavior)0>(JSContext*, mozilla::dom::AudioWorkletNode*, JS::Handle<JSObject*>, JS::MutableHandle<JS::Value>) (cx=0x7f063c62f000, value=
0x7f062b0e3400, givenProto=..., rval=...)
at /var/karl/moz/obj/dist/include/mozilla/dom/BindingUtils.h:1041
#9 0x00007f064a80264a in mozilla::dom::GetOrCreateDOMReflector<mozilla::dom::AudioWorkletNode>(JSContext*, mozilla::dom::AudioWorkletNode*, JS::MutableHandle<JS::Value>, JS::Handle<JSObject*>)
(cx=0x7f063c62f000, value=0x7f062b0e3400, rval=..., givenProto=...)
at /var/karl/moz/obj/dist/include/mozilla/dom/BindingUtils.h:1113
#10 0x00007f064a8025cd in mozilla::dom::GetOrCreateDOMReflectorHelper<RefPtr<mozilla::dom::AudioWorkletNode>, true>::GetOrCreate(JSContext*, RefPtr<mozilla::dom::AudioWorkletNode> const&, JS::Handle<JSObject*>, JS::MutableHandle<JS::Value>) (cx=0x7f063c62f000, value=..., givenProto=..., rval=...)
at /var/karl/moz/obj/dist/include/mozilla/dom/BindingUtils.h:1682
#11 0x00007f064a80230a in mozilla::dom::GetOrCreateDOMReflector<RefPtr<mozilla::dom::AudioWorkletNode> >(JSContext*, RefPtr<mozilla::dom::AudioWorkletNode>&, JS::MutableHandle<JS::Value>, JS::Handle<JSObject*>)
..., rval=..., givenProto=...) at /var/karl/moz/obj/dist/include/mozilla/dom/BindingUtils.h:1700
#12 0x00007f064a6cb94b in mozilla::dom::AudioWorkletNode_Binding::_constructor(JSContext*, unsigned int, JS::Value*) (cx_=0x7f063c62f000, argc=2, vp=0x7f062c890178) at AudioWorkletNodeBinding.cpp:778
#13 0x00007f06510cd212 in CallJSNative(JSContext*, bool (*)(JSContext*, unsigned int, JS::Value*), js::CallReason, JS::CallArgs const&) (cx=0x7f063c62f000, native=0x7f064a6caf60 <mozilla::dom::AudioWorkletNode_Binding::_constructor(JSContext*, unsigned int, JS::Value*)>, reason=js::CallReason::Call, args=...) at /home/karl/moz/dev/js/src/vm/Interpreter.cpp:507
#14 0x00007f06510d9433 in CallJSNativeConstructor(JSContext*, bool (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) (cx=0x7f063c62f000, native=0x7f064a6caf60 <mozilla::dom::AudioWorkletNode_Binding::_constructor(JSContext*, unsigned int, JS::Value*)>, args=...) at /home/karl/moz/dev/js/src/vm/Interpreter.cpp:523
#15 0x00007f06510b7608 in InternalConstruct(JSContext*, js::AnyConstructArgs const&) (cx=0x7f063c62f000, args=...) at /home/karl/moz/dev/js/src/vm/Interpreter.cpp:727
#16 0x00007f06510b6e54 in js::ConstructFromStack(JSContext*, JS::CallArgs const&) (cx=0x7f063c62f000, args=...) at /home/karl/moz/dev/js/src/vm/Interpreter.cpp:754
#17 0x00007f06510a9883 in Interpret(JSContext*, js::RunState&) (cx=0x7f063c62f000, state=...) at /home/karl/moz/dev/js/src/vm/Interpreter.cpp:3326
#18 0x00007f065109e327 in js::RunScript(JSContext*, js::RunState&) (cx=0x7f063c62f000, state=...) at /home/karl/moz/dev/js/src/vm/Interpreter.cpp:468
#19 0x00007f06510b6738 in js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) (cx=0x7f063c62f000, args=..., construct=js::NO_CONSTRUCT, reason=js::CallReason::Call) at /home/karl/moz/dev/js/src/vm/Interpreter.cpp:636
#20 0x00007f06510b6cb7 in InternalCall(JSContext*, js::AnyInvokeArgs const&, js::CallReason) (cx=0x7f063c62f000, args=..., reason=js::CallReason::Call) at /home/karl/moz/dev/js/src/vm/Interpreter.cpp:664
#21 0x00007f06510b6d67 in js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>, js::CallReason) (cx=0x7f063c62f000, fval=..., thisv=..., args=..., rval=..., reason=js::CallReason::Call) at /home/karl/moz/dev/js/src/vm/Interpreter.cpp:681
#22 0x00007f0651feb6d1 in js::jit::InvokeFunction(JSContext*, JS::Handle<JSObject*>, bool, bool, unsigned int, JS::Value*, JS::MutableHandle<JS::Value>) (cx=0x7f063c62f000, obj=..., constructing=false, ignoresReturnValue=false, argc=1, argv=0x7fff66b08860, rval=...) at /home/karl/moz/dev/js/src/jit/VMFunctions.cpp:272
Updated•5 years ago
|
Comment 4•5 years ago
|
||
Set release status flags based on info from the regressing bug 1655544
Assignee | ||
Comment 5•5 years ago
|
||
Updated•5 years ago
|
Assignee | ||
Comment 6•5 years ago
|
||
so as to clarify pointer safety and to take advantage of nsString shared
buffer optimizations.
Assignee | ||
Comment 7•5 years ago
|
||
AudioWorkletNode will soon not need the return value.
Depends on D87552
Assignee | ||
Comment 8•5 years ago
|
||
When constructing a JS object derived from AudioWorkletNode, the reflector
should be created using the prototype for the derived class.
https://searchfox.org/mozilla-central/rev/2f9eacd9d3d995c937b4251a5557d95d494c9be1/dom/bindings/BindingUtils.h#3078-3081
The reflector is typically created with the correct prototype after
AudioWorkletNode::Constructor() returns.
AudioParamMap_Binding::MaplikeHelpers::Set() calls GetOrCreateDOMReflector()
to get the JS reflector for the AudioParamMap, which obtains the associated
global from the reflector on the AudioWorkletNode parent.
https://searchfox.org/mozilla-central/rev/a315a1a0f09550e23e4590a77e74f36543315da3/dom/bindings/BindingUtils.h#1591-1599
While this was done during the AudioWorkletNode::Constructor(), the
AudioWorkletNode reflector did not yet exist and so was created on-demand
without an explicit prototype, which resulted in the base class prototype
being used incorrectly.
https://searchfox.org/mozilla-central/rev/a315a1a0f09550e23e4590a77e74f36543315da3/dom/bindings/BindingUtils.h#1550
Delaying set-up of the AudioParamMap provides that the AudioWorkletNode
construction is complete and has a correct reflector before AudioParamMap
usage attempts to get the parent reflector.
Depends on D87553
Assignee | ||
Comment 9•5 years ago
|
||
Comment 10•5 years ago
|
||
![]() |
||
Comment 11•5 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/20800234d0d8
https://hg.mozilla.org/mozilla-central/rev/55e777a64d86
https://hg.mozilla.org/mozilla-central/rev/ee0b3cf19483
Comment 12•5 years ago
|
||
![]() |
||
Comment 14•5 years ago
|
||
bugherder |
Updated•5 years ago
|
Description
•