Closed Bug 1908231 Opened 2 years ago Closed 2 years ago

Assertion failure: aDest.Length() >= aSource.Length() / aSourceChannelCount - aCopyToSpec.mFrameOffset, at /dom/media/webcodecs/AudioData.cpp:465

Categories

(Core :: Audio/Video: Web Codecs, defect)

x86_64
Linux
defect

Tracking

()

VERIFIED FIXED
130 Branch
Tracking Status
firefox-esr115 --- unaffected
firefox-esr128 --- disabled
firefox128 --- disabled
firefox129 --- disabled
firefox130 --- verified

People

(Reporter: jkratzer, Assigned: padenot)

References

(Blocks 1 open bug, Regression)

Details

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

Attachments

(2 files)

Testcase found while fuzzing mozilla-central rev 2ed6b77c66d3 (built with: --enable-debug --enable-fuzzing).

Testcase can be reproduced using the following commands:

$ pip install fuzzfetch grizzly-framework --upgrade
$ python -m fuzzfetch --build 2ed6b77c66d3 --debug --fuzzing  -n firefox
$ python -m grizzly.replay.bugzilla ./firefox/firefox <bugid>
Assertion failure: aDest.Length() >= aSource.Length() / aSourceChannelCount - aCopyToSpec.mFrameOffset, at /dom/media/webcodecs/AudioData.cpp:465

    ==248340==ERROR: UndefinedBehaviorSanitizer: SEGV on unknown address 0x000000000000 (pc 0x7b6460957b89 bp 0x7b640bffc610 sp 0x7b640bffc5f0 T248405)
    ==248340==The signal is caused by a WRITE memory access.
    ==248340==Hint: address points to the zero page.
        #0 0x7b6460957b89 in void mozilla::dom::CopySamples<unsigned char, int>(mozilla::Span<unsigned char, 18446744073709551615ul>, mozilla::Span<int, 18446744073709551615ul>, unsigned int, mozilla::dom::AudioSampleFormat, mozilla::dom::CopyToSpec const&) /dom/media/webcodecs/AudioData.cpp:464:5
        #1 0x7b6460913d6c in operator()<mozilla::Span<int, 18446744073709551615UL> > /dom/media/webcodecs/AudioData.cpp:527:7
        #2 0x7b6460913d6c in match<(lambda at /dom/media/webcodecs/AudioData.cpp:526:17), mozilla::Variant<mozilla::Span<unsigned char, 18446744073709551615UL>, mozilla::Span<short, 18446744073709551615UL>, mozilla::Span<int, 18446744073709551615UL>, mozilla::Span<float, 18446744073709551615UL> > &> /builds/worker/workspace/obj-build/dist/include/mozilla/Variant.h:266:16
        #3 0x7b6460913d6c in match<(lambda at /dom/media/webcodecs/AudioData.cpp:526:17), mozilla::Variant<mozilla::Span<unsigned char, 18446744073709551615UL>, mozilla::Span<short, 18446744073709551615UL>, mozilla::Span<int, 18446744073709551615UL>, mozilla::Span<float, 18446744073709551615UL> > &> /builds/worker/workspace/obj-build/dist/include/mozilla/Variant.h:279:14
        #4 0x7b6460913d6c in match<(lambda at /dom/media/webcodecs/AudioData.cpp:526:17), mozilla::Variant<mozilla::Span<unsigned char, 18446744073709551615UL>, mozilla::Span<short, 18446744073709551615UL>, mozilla::Span<int, 18446744073709551615UL>, mozilla::Span<float, 18446744073709551615UL> > &> /builds/worker/workspace/obj-build/dist/include/mozilla/Variant.h:279:14
        #5 0x7b6460913d6c in match<(lambda at /dom/media/webcodecs/AudioData.cpp:526:17)> /builds/worker/workspace/obj-build/dist/include/mozilla/Variant.h:852:12
        #6 0x7b6460913d6c in operator()<mozilla::Span<unsigned char, 18446744073709551615UL> > /dom/media/webcodecs/AudioData.cpp:526:11
        #7 0x7b6460913d6c in match<(lambda at /dom/media/webcodecs/AudioData.cpp:525:17), mozilla::Variant<mozilla::Span<unsigned char, 18446744073709551615UL>, mozilla::Span<short, 18446744073709551615UL>, mozilla::Span<int, 18446744073709551615UL>, mozilla::Span<float, 18446744073709551615UL> > &> /builds/worker/workspace/obj-build/dist/include/mozilla/Variant.h:266:16
        #8 0x7b6460913d6c in match<(lambda at /dom/media/webcodecs/AudioData.cpp:525:17)> /builds/worker/workspace/obj-build/dist/include/mozilla/Variant.h:852:12
        #9 0x7b6460913d6c in mozilla::dom::CopySamples(mozilla::Variant<mozilla::Span<unsigned char, 18446744073709551615ul>, mozilla::Span<short, 18446744073709551615ul>, mozilla::Span<int, 18446744073709551615ul>, mozilla::Span<float, 18446744073709551615ul>>&, mozilla::Variant<mozilla::Span<unsigned char, 18446744073709551615ul>, mozilla::Span<short, 18446744073709551615ul>, mozilla::Span<int, 18446744073709551615ul>, mozilla::Span<float, 18446744073709551615ul>>&, unsigned int, mozilla::dom::AudioSampleFormat, mozilla::dom::CopyToSpec const&) /dom/media/webcodecs/AudioData.cpp:525:11
        #10 0x7b64609140b3 in mozilla::dom::DoCopy(mozilla::Span<unsigned char, 18446744073709551615ul>, mozilla::Span<unsigned char, 18446744073709551615ul>, unsigned int, mozilla::dom::AudioSampleFormat, mozilla::dom::CopyToSpec const&) /dom/media/webcodecs/AudioData.cpp:538:3
        #11 0x7b6460914a47 in operator() /dom/media/webcodecs/AudioData.cpp:596:5
        #12 0x7b6460914a47 in CallProcessor<(lambda at /dom/media/webcodecs/AudioData.cpp:595:41)> /builds/worker/workspace/obj-build/dist/include/mozilla/dom/TypedArray.h:579:12
        #13 0x7b6460914a47 in ProcessFixedData<(lambda at /dom/media/webcodecs/AudioData.cpp:595:41)> /builds/worker/workspace/obj-build/dist/include/mozilla/dom/TypedArray.h:685:12
        #14 0x7b6460914a47 in operator()<mozilla::dom::TypedArray<JS::ArrayBuffer> > /builds/worker/workspace/obj-build/dist/include/mozilla/dom/TypedArray.h:1023:28
        #15 0x7b6460914a47 in Apply<(lambda at /builds/worker/workspace/obj-build/dist/include/mozilla/dom/TypedArray.h:1022:15)> /builds/worker/workspace/obj-build/dist/include/mozilla/dom/TypedArray.h:939:1
        #16 0x7b6460914a47 in Apply<(lambda at /builds/worker/workspace/obj-build/dist/include/mozilla/dom/TypedArray.h:1022:15)> /builds/worker/workspace/obj-build/dist/include/mozilla/dom/TypedArray.h:952:19
        #17 0x7b6460914a47 in Apply<(lambda at /builds/worker/workspace/obj-build/dist/include/mozilla/dom/TypedArray.h:1022:15)> /builds/worker/workspace/obj-build/dist/include/mozilla/dom/TypedArray.h:960:16
        #18 0x7b6460914a47 in ApplyToTypedArrays<mozilla::dom::MaybeSharedArrayBufferViewOrMaybeSharedArrayBuffer, (lambda at /builds/worker/workspace/obj-build/dist/include/mozilla/dom/TypedArray.h:1022:15)> /builds/worker/workspace/obj-build/dist/include/mozilla/dom/TypedArray.h:972:7
        #19 0x7b6460914a47 in ProcessTypedArraysFixed<mozilla::dom::MaybeSharedArrayBufferViewOrMaybeSharedArrayBuffer, (lambda at /dom/media/webcodecs/AudioData.cpp:595:41), 0> /builds/worker/workspace/obj-build/dist/include/mozilla/dom/TypedArray.h:1021:10
        #20 0x7b6460914a47 in mozilla::dom::AudioData::CopyTo(mozilla::dom::MaybeSharedArrayBufferViewOrMaybeSharedArrayBuffer const&, mozilla::dom::AudioDataCopyToOptions const&, mozilla::ErrorResult&) /dom/media/webcodecs/AudioData.cpp:595:3
        #21 0x7b645e9584cd in mozilla::dom::AudioData_Binding::copyTo(JSContext*, JS::Handle<JSObject*>, void*, JSJitMethodCallArgs const&) /builds/worker/workspace/obj-build/dom/bindings/./AudioDataBinding.cpp:745:24
        #22 0x7b645f843e57 in bool mozilla::dom::binding_detail::GenericMethod<mozilla::dom::binding_detail::NormalThisPolicy, mozilla::dom::binding_detail::ThrowExceptions>(JSContext*, unsigned int, JS::Value*) /dom/bindings/BindingUtils.cpp:3268:13
        #23 0x7b6462bca064 in CallJSNative(JSContext*, bool (*)(JSContext*, unsigned int, JS::Value*), js::CallReason, JS::CallArgs const&) /js/src/vm/Interpreter.cpp:491:13
        #24 0x7b6462bc984f in js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct, js::CallReason) /js/src/vm/Interpreter.cpp:585:12
        #25 0x7b6463689146 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
        #26 0x3e9027e04a5e  ([anon:js-executable-memory]+0x4ba5e)
    
    UndefinedBehaviorSanitizer can not provide additional info.
    SUMMARY: UndefinedBehaviorSanitizer: SEGV /dom/media/webcodecs/AudioData.cpp:464:5 in void mozilla::dom::CopySamples<unsigned char, int>(mozilla::Span<unsigned char, 18446744073709551615ul>, mozilla::Span<int, 18446744073709551615ul>, unsigned int, mozilla::dom::AudioSampleFormat, mozilla::dom::CopyToSpec const&)
    ==248340==ABORTING
Attached file Testcase

Verified bug as reproducible on mozilla-central 20240716214815-41f5f11a27e6.
The bug appears to have been introduced in the following build range:

Start: 143c3925806ed35200c2a71e650e7e74f58520a7 (20240306140028)
End: 80c146334cd815908f83c30a8b660e50cb63e210 (20240306161516)
Pushlog: https://hg.mozilla.org/integration/autoland/pushloghtml?fromchange=143c3925806ed35200c2a71e650e7e74f58520a7&tochange=80c146334cd815908f83c30a8b660e50cb63e210

Keywords: regression
Whiteboard: [bugmon:confirm] → [bugmon:bisected,confirmed]
Attachment #9413091 - Attachment mime type: text/plain → text/html
Assignee: nobody → padenot
Status: NEW → ASSIGNED

Based on comment #2, this bug contains a bisection range found by bugmon. However, the Regressed by field is still not filled.

:padenot, if possible, could you fill the Regressed by field and investigate this regression?

For more information, please visit BugBot documentation.

Flags: needinfo?(padenot)
Regressed by: 1858958

Set release status flags based on info from the regressing bug 1858958

Backed out for causing bustage on AudioData.cpp and whitespace lint failure on 1908231.html

Backout link

Push with failures

Failure log - bustage
Failure log - lint failure

Status: ASSIGNED → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → 130 Branch

Verified bug as fixed on rev mozilla-central 20240726152430-e2a8e98f367a.
Removing bugmon keyword as no further action possible. Please review the bug and re-add the keyword for further analysis.

Status: RESOLVED → VERIFIED
Keywords: bugmon
Flags: needinfo?(padenot)
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: