Closed Bug 1764940 Opened 2 years ago Closed 2 years ago

Crash [@ Stopped]

Categories

(Core :: WebRTC, defect, P1)

x86_64
Linux
defect

Tracking

()

RESOLVED FIXED
101 Branch
Tracking Status
firefox-esr91 --- unaffected
firefox99 --- unaffected
firefox100 --- unaffected
firefox101 --- fixed

People

(Reporter: jkratzer, Assigned: bwc)

References

(Blocks 1 open bug, Regression)

Details

(Keywords: regression, testcase, Whiteboard: [bugmon:bisected,confirmed])

Crash Data

Attachments

(2 files)

Testcase found while fuzzing mozilla-central rev 7f6fc25d231f (built with: --enable-address-sanitizer --enable-fuzzing).

Testcase can be reproduced using the following commands:

$ pip install fuzzfetch grizzly-framework
$ python -m fuzzfetch --build 7f6fc25d231f --asan --fuzzing -n firefox
$ python -m grizzly.replay ./firefox/firefox testcase.html
[@ Stopped]

    =================================================================
    ==2378477==ERROR: AddressSanitizer: SEGV on unknown address 0x0000000000e0 (pc 0x7ff792a54cc3 bp 0x7ffe74df6c90 sp 0x7ffe74df6880 T0)
    ==2378477==The signal is caused by a READ memory access.
    ==2378477==Hint: address points to the zero page.
        #0 0x7ff792a54cc3 in Stopped /dom/media/webrtc/jsapi/TransceiverImpl.h:96:33
        #1 0x7ff792a54cc3 in mozilla::dom::RTCRtpSender::SetParameters(mozilla::dom::RTCRtpParameters const&) /dom/media/webrtc/jsapi/RTCRtpSender.cpp:399:25
        #2 0x7ff78fdb8666 in setParameters /builds/worker/workspace/obj-build/dom/bindings/RTCRtpSenderBinding.cpp:139:60
        #3 0x7ff78fdb8666 in mozilla::dom::RTCRtpSender_Binding::setParameters_promiseWrapper(JSContext*, JS::Handle<JSObject*>, void*, JSJitMethodCallArgs const&) /builds/worker/workspace/obj-build/dom/bindings/RTCRtpSenderBinding.cpp:150:13
        #4 0x7ff790e9510a in bool mozilla::dom::binding_detail::GenericMethod<mozilla::dom::binding_detail::NormalThisPolicy, mozilla::dom::binding_detail::ConvertExceptionsToPromises>(JSContext*, unsigned int, JS::Value*) /dom/bindings/BindingUtils.cpp:3270:13
        #5 0x7ff79aeb35b4 in CallJSNative /js/src/vm/Interpreter.cpp:420:13
        #6 0x7ff79aeb35b4 in js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) /js/src/vm/Interpreter.cpp:507:12
        #7 0x7ff79ae9fcfb in CallFromStack /js/src/vm/Interpreter.cpp:571:10
        #8 0x7ff79ae9fcfb in Interpret(JSContext*, js::RunState&) /js/src/vm/Interpreter.cpp:3293:16
        #9 0x7ff79ae84df1 in js::RunScript(JSContext*, js::RunState&) /js/src/vm/Interpreter.cpp:389:13
        #10 0x7ff79aeb36ef in js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) /js/src/vm/Interpreter.cpp:539:13
        #11 0x7ff79aeb52db in js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>, js::CallReason) /js/src/vm/Interpreter.cpp:584:8
        #12 0x7ff7995fd37d in JS::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::HandleValueArray const&, JS::MutableHandle<JS::Value>) /js/src/vm/CallAndConstruct.cpp:117:10
        #13 0x7ff790ba5b2d in mozilla::dom::Function::Call(mozilla::dom::BindingCallContext&, JS::Handle<JS::Value>, nsTArray<JS::Value> const&, JS::MutableHandle<JS::Value>, mozilla::ErrorResult&) /builds/worker/workspace/obj-build/dom/bindings/FunctionBinding.cpp:50:8
        #14 0x7ff78f1b5b21 in void mozilla::dom::Function::Call<nsCOMPtr<nsIGlobalObject> >(nsCOMPtr<nsIGlobalObject> const&, nsTArray<JS::Value> const&, JS::MutableHandle<JS::Value>, mozilla::ErrorResult&, char const*, mozilla::dom::CallbackObject::ExceptionHandling, JS::Realm*) /builds/worker/workspace/obj-build/dist/include/mozilla/dom/FunctionBinding.h:71:12
        #15 0x7ff78f1b5703 in mozilla::dom::CallbackTimeoutHandler::Call(char const*) /dom/base/TimeoutHandler.cpp:167:29
        #16 0x7ff78ed23896 in nsGlobalWindowInner::RunTimeoutHandler(mozilla::dom::Timeout*, nsIScriptContext*) /dom/base/nsGlobalWindowInner.cpp:6390:38
        #17 0x7ff78f1caf99 in mozilla::dom::TimeoutManager::RunTimeout(mozilla::TimeStamp const&, mozilla::TimeStamp const&, bool) /dom/base/TimeoutManager.cpp:902:44
        #18 0x7ff78f1b2145 in mozilla::dom::TimeoutExecutor::MaybeExecute() /dom/base/TimeoutExecutor.cpp:179:11
        #19 0x7ff78f1b2cec in Notify /dom/base/TimeoutExecutor.cpp:246:5
        #20 0x7ff78f1b2cec in non-virtual thunk to mozilla::dom::TimeoutExecutor::Notify(nsITimer*) /dom/base/TimeoutExecutor.cpp
        #21 0x7ff78bf3a5bc in operator() /xpcom/threads/nsTimerImpl.cpp:663:44
        #22 0x7ff78bf3a5bc in matchN<mozilla::Variant<nsTimerImpl::UnknownCallback, nsCOMPtr<nsITimerCallback>, nsCOMPtr<nsIObserver>, nsTimerImpl::FuncCallback, nsTimerImpl::ClosureCallback> &, (lambda at /xpcom/threads/nsTimerImpl.cpp:663:7), (lambda at /xpcom/threads/nsTimerImpl.cpp:664:7), (lambda at /xpcom/threads/nsTimerImpl.cpp:667:7), (lambda at /xpcom/threads/nsTimerImpl.cpp:668:7)> /builds/worker/workspace/obj-build/dist/include/mozilla/Variant.h:309:16
        #23 0x7ff78bf3a5bc in matchN<mozilla::Variant<nsTimerImpl::UnknownCallback, nsCOMPtr<nsITimerCallback>, nsCOMPtr<nsIObserver>, nsTimerImpl::FuncCallback, nsTimerImpl::ClosureCallback> &, (lambda at /xpcom/threads/nsTimerImpl.cpp:662:7), (lambda at /xpcom/threads/nsTimerImpl.cpp:663:7), (lambda at /xpcom/threads/nsTimerImpl.cpp:664:7), (lambda at /xpcom/threads/nsTimerImpl.cpp:667:7), (lambda at /xpcom/threads/nsTimerImpl.cpp:668:7)> /builds/worker/workspace/obj-build/dist/include/mozilla/Variant.h:318:14
        #24 0x7ff78bf3a5bc in matchN<mozilla::Variant<nsTimerImpl::UnknownCallback, nsCOMPtr<nsITimerCallback>, nsCOMPtr<nsIObserver>, nsTimerImpl::FuncCallback, nsTimerImpl::ClosureCallback> &, (lambda at /xpcom/threads/nsTimerImpl.cpp:662:7), (lambda at /xpcom/threads/nsTimerImpl.cpp:663:7), (lambda at /xpcom/threads/nsTimerImpl.cpp:664:7), (lambda at /xpcom/threads/nsTimerImpl.cpp:667:7), (lambda at /xpcom/threads/nsTimerImpl.cpp:668:7)> /builds/worker/workspace/obj-build/dist/include/mozilla/Variant.h:902:12
        #25 0x7ff78bf3a5bc in match<(lambda at /xpcom/threads/nsTimerImpl.cpp:662:7), (lambda at /xpcom/threads/nsTimerImpl.cpp:663:7), (lambda at /xpcom/threads/nsTimerImpl.cpp:664:7), (lambda at /xpcom/threads/nsTimerImpl.cpp:667:7), (lambda at /xpcom/threads/nsTimerImpl.cpp:668:7)> /builds/worker/workspace/obj-build/dist/include/mozilla/Variant.h:857:12
        #26 0x7ff78bf3a5bc in nsTimerImpl::Fire(int) /xpcom/threads/nsTimerImpl.cpp:661:22
        #27 0x7ff78bee38cf in nsTimerEvent::Run() /xpcom/threads/TimerThread.cpp:265:11
        #28 0x7ff78bf1b3f2 in mozilla::ThrottledEventQueue::Inner::ExecuteRunnable() /xpcom/threads/ThrottledEventQueue.cpp:254:22
        #29 0x7ff78bf0ebcf in mozilla::ThrottledEventQueue::Inner::Executor::Run() /xpcom/threads/ThrottledEventQueue.cpp:81:15
        #30 0x7ff78bf10a62 in mozilla::RunnableTask::Run() /xpcom/threads/TaskController.cpp:467:16
        #31 0x7ff78bed706d in mozilla::TaskController::DoExecuteNextTaskOnlyMainThreadInternal(mozilla::detail::BaseAutoLock<mozilla::Mutex&> const&) /xpcom/threads/TaskController.cpp:780:26
        #32 0x7ff78bed4568 in mozilla::TaskController::ExecuteNextTaskOnlyMainThreadInternal(mozilla::detail::BaseAutoLock<mozilla::Mutex&> const&) /xpcom/threads/TaskController.cpp:612:15
        #33 0x7ff78bed4c99 in mozilla::TaskController::ProcessPendingMTTask(bool) /xpcom/threads/TaskController.cpp:390:36
        #34 0x7ff78bf1d6a4 in operator() /xpcom/threads/TaskController.cpp:127:37
        #35 0x7ff78bf1d6a4 in mozilla::detail::RunnableFunction<mozilla::TaskController::InitializeInternal()::$_1>::Run() /builds/worker/workspace/obj-build/dist/include/nsThreadUtils.h:531:5
        #36 0x7ff78bef73e7 in nsThread::ProcessNextEvent(bool, bool*) /xpcom/threads/nsThread.cpp:1180:16
        #37 0x7ff78bf0114c in NS_ProcessNextEvent(nsIThread*, bool) /xpcom/threads/nsThreadUtils.cpp:465:10
        #38 0x7ff78d611984 in mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) /ipc/glue/MessagePump.cpp:107:5
        #39 0x7ff78d48b971 in RunInternal /ipc/chromium/src/base/message_loop.cc:380:10
        #40 0x7ff78d48b971 in RunHandler /ipc/chromium/src/base/message_loop.cc:373:3
        #41 0x7ff78d48b971 in MessageLoop::Run() /ipc/chromium/src/base/message_loop.cc:355:3
        #42 0x7ff794311fa7 in nsBaseAppShell::Run() /widget/nsBaseAppShell.cpp:137:27
        #43 0x7ff7991a80af in XRE_RunAppShell() /toolkit/xre/nsEmbedFunctions.cpp:870:20
        #44 0x7ff78d48b971 in RunInternal /ipc/chromium/src/base/message_loop.cc:380:10
        #45 0x7ff78d48b971 in RunHandler /ipc/chromium/src/base/message_loop.cc:373:3
        #46 0x7ff78d48b971 in MessageLoop::Run() /ipc/chromium/src/base/message_loop.cc:355:3
        #47 0x7ff7991a72d3 in XRE_InitChildProcess(int, char**, XREChildData const*) /toolkit/xre/nsEmbedFunctions.cpp:729:34
        #48 0x558c2b0b147d in content_process_main(mozilla::Bootstrap*, int, char**) /browser/app/../../ipc/contentproc/plugin-container.cpp:57:28
        #49 0x558c2b0b18b0 in main /browser/app/nsBrowserApp.cpp:327:18
        #50 0x7ff7b0c710b2 in __libc_start_main /build/glibc-sMfBJT/glibc-2.31/csu/../csu/libc-start.c:308:16
        #51 0x558c2b000569 in _start (/home/jkratzer/builds/mc-asan/firefox+0x5e569)
    
    AddressSanitizer can not provide additional info.
    SUMMARY: AddressSanitizer: SEGV /dom/media/webrtc/jsapi/TransceiverImpl.h:96:33 in Stopped
    ==2378477==ABORTING
Attached file Testcase
Crash Signature: [@ Stopped] → [@ Stopped] [@ mozilla::dom::RTCRtpSender::SetParameters ]

Bugmon Analysis
Verified bug as reproducible on mozilla-central 20220415213125-86271ddb1099.
The bug appears to have been introduced in the following build range:

Start: 7fac8607d414d792f4530b726f68ad36afb3c545 (20220405212313)
End: 5135fb6675eacd4e4aa46983b4c7821f678544a6 (20220405205608)
Pushlog: https://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=7fac8607d414d792f4530b726f68ad36afb3c545&tochange=5135fb6675eacd4e4aa46983b4c7821f678544a6

Keywords: regression
Whiteboard: [bugmon:confirm] → [bugmon:bisected,confirmed]

Byron, this looks like fallout from the move of RTCRtpSender bits to c++. Can you take a look?

Severity: -- → S3
Flags: needinfo?(docfaraday)
Priority: -- → P2
Regressed by: 1616937, 1624989

I'm raising the severity on all of these to S2 given their potential to introduce intermittent crashes in regular WebRTC calls. Probably the only reason they're not causing more regular crashes in the field, is that sites generally hold onto their peer connections longer. However, trackers may not.

E.g. this one tab-crashed reliably for me with http://jsfiddle.net/jib1/oLpyLn9v/867/ in Nightly without any special address sanitizer flags: bp-8c3a8394-1a27-4eb0-98c5-778d10220418

Severity: S3 → S2
Assignee: nobody → docfaraday
Priority: P2 → P1
Has Regression Range: --- → yes

Depends on D144046

Attachment #9272932 - Attachment description: WIP: Bug 1764940: Test-case for bug. → Bug 1764940: Test-case for bug. r?jib

The fix for bug 1764933 also fixes this. I still would like to land the test-case though.

Flags: needinfo?(docfaraday)

Bugmon Analysis
Testcase crashes using the initial build (mozilla-central 20220415092909-7f6fc25d231f) but not with tip (mozilla-central 20220422212846-93ecd130a241.)
The bug appears to have been fixed in the following build range:

Start: c61b0792dfa65e79b9781b1eea6dd9d240644e55 (20220420151620)
End: a33cd50e2f73a5626864cd88e14d9fbd2ab158c2 (20220420215300)
Pushlog: https://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=c61b0792dfa65e79b9781b1eea6dd9d240644e55&tochange=a33cd50e2f73a5626864cd88e14d9fbd2ab158c2
Removing bugmon keyword as no further action possible. Please review the bug and re-add the keyword for further analysis.

Keywords: bugmon
Status: NEW → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → 101 Branch
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: