Closed Bug 1677881 Opened 5 years ago Closed 4 years ago

Assertion `nominalSkip >= -skipFract' [@ soundtouch::TDStretch::processSamples]

Categories

(Core :: Audio/Video: Playback, defect, P3)

defect

Tracking

()

RESOLVED FIXED
89 Branch
Tracking Status
firefox-esr78 --- wontfix
firefox85 --- wontfix
firefox86 --- wontfix
firefox87 --- wontfix
firefox88 --- wontfix
firefox89 --- fixed

People

(Reporter: tsmith, Assigned: padenot)

References

(Blocks 1 open bug, Regression)

Details

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

Attachments

(3 files)

Attached file testcase.html

firefox-bin: src/media/libsoundtouch/src/TDStretch.cpp:699: void soundtouch::TDStretch::processSamples(): Assertion `nominalSkip >= -skipFract' failed.

#0 0x7fa727660f47 in gsignal /build/glibc-2ORdQG/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51
#1 0x7fa7276628b0 in abort /build/glibc-2ORdQG/glibc-2.27/stdlib/abort.c:79
#2 0x7fa727652429 in __assert_fail_base /build/glibc-2ORdQG/glibc-2.27/assert/assert.c:92
#3 0x7fa7276524a1 in __assert_fail /build/glibc-2ORdQG/glibc-2.27/assert/assert.c:101
#4 0x7fa728afa135 in soundtouch::TDStretch::processSamples() src/media/libsoundtouch/src/TDStretch.cpp:699:13
#5 0x7fa728af8e39 in moveSamples src/media/libsoundtouch/src/FIFOSamplePipe.h:93:9
#6 0x7fa728af8e39 in soundtouch::SoundTouch::putSamples(float const*, unsigned int) src/media/libsoundtouch/src/SoundTouch.cpp:298:21
#7 0x7fa70f49d555 in mozilla::AudioStream::GetTimeStretched(mozilla::AudioBufferWriter&) src/dom/media/AudioStream.cpp:558:23
#8 0x7fa70f49e0ce in mozilla::AudioStream::DataCallback(void*, long) src/dom/media/AudioStream.cpp:637:5
#9 0x7fa7144e2d20 in _$LT$audioipc_client..stream..CallbackServer$u20$as$u20$audioipc..rpc..server..Server$GT$::process::_$u7b$$u7b$closure$u7d$$u7d$::_$u7b$$u7b$closure$u7d$$u7d$::h29503e80ed67dce4 src/media/audioipc/client/src/stream.rs:113:29
#10 0x7fa7144e2d20 in audioipc_client::run_in_callback::h1876b156d5aeb74a src/media/audioipc/client/src/lib.rs:54:13
#11 0x7fa7144e2d20 in _$LT$audioipc_client..stream..CallbackServer$u20$as$u20$audioipc..rpc..server..Server$GT$::process::_$u7b$$u7b$closure$u7d$$u7d$::h2f092c995f709d05 src/media/audioipc/client/src/stream.rs:111:21
#12 0x7fa7144e2d20 in futures::future::lazy::Lazy$LT$F$C$R$GT$::get::habf701aeec7a59c1 src/third_party/rust/futures-0.1.29/src/future/lazy.rs:64:59
#13 0x7fa7144e2d20 in _$LT$futures..future..lazy..Lazy$LT$F$C$R$GT$$u20$as$u20$futures..future..Future$GT$::poll::hf547cd65aa010e2c src/third_party/rust/futures-0.1.29/src/future/lazy.rs:82:9
#14 0x7fa7144e2d20 in futures::future::catch_unwind::_$LT$impl$u20$futures..future..Future$u20$for$u20$std..panic..AssertUnwindSafe$LT$F$GT$$GT$::poll::haa26dfad34dba109 src/third_party/rust/futures-0.1.29/src/future/catch_unwind.rs:49:9
#15 0x7fa7144e2d20 in _$LT$futures..future..catch_unwind..CatchUnwind$LT$F$GT$$u20$as$u20$futures..future..Future$GT$::poll::_$u7b$$u7b$closure$u7d$$u7d$::h5248021248ca244a src/third_party/rust/futures-0.1.29/src/future/catch_unwind.rs:32:46
#16 0x7fa7144e2d20 in std::panicking::try::do_call::h53cec11bd1c4629f /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/panicking.rs:373:40
#17 0x7fa7144e2d20 in std::panicking::try::hfc33112cb2ccf8f4 /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/panicking.rs:337:19
#18 0x7fa7144e2d20 in std::panic::catch_unwind::he2e57ddc6388ed1b /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/panic.rs:379:14
#19 0x7fa7144e2d20 in _$LT$futures..future..catch_unwind..CatchUnwind$LT$F$GT$$u20$as$u20$futures..future..Future$GT$::poll::h49ff6f0b72b51d22 src/third_party/rust/futures-0.1.29/src/future/catch_unwind.rs:32:29
#20 0x7fa7144e2d20 in _$LT$futures_cpupool..MySender$LT$F$C$core..result..Result$LT$$LT$F$u20$as$u20$futures..future..Future$GT$..Item$C$$LT$F$u20$as$u20$futures..future..Future$GT$..Error$GT$$GT$$u20$as$u20$futures..future..Future$GT$::poll::ha8ff4758aafc162a src/third_party/rust/futures-cpupool/src/lib.rs:325:25
#21 0x7fa714591d2c in _$LT$alloc..boxed..Box$LT$F$GT$$u20$as$u20$futures..future..Future$GT$::poll::hfbbb2c38fc449f0f src/third_party/rust/futures-0.1.29/src/future/mod.rs:113:13
#22 0x7fa714591d2c in futures::task_impl::Spawn$LT$T$GT$::poll_future_notify::_$u7b$$u7b$closure$u7d$$u7d$::h2136d560e7610aa8 src/third_party/rust/futures-0.1.29/src/task_impl/mod.rs:329:45
#23 0x7fa714591d2c in futures::task_impl::Spawn$LT$T$GT$::enter::_$u7b$$u7b$closure$u7d$$u7d$::h29f695dd0c0e5c10 src/third_party/rust/futures-0.1.29/src/task_impl/mod.rs:399:27
#24 0x7fa714591d2c in futures::task_impl::std::set::h53d49f591c694d9a src/third_party/rust/futures-0.1.29/src/task_impl/std/mod.rs:83:13
#25 0x7fa714591d2c in futures::task_impl::Spawn$LT$T$GT$::enter::ha575bda7f8a8c4e5 src/third_party/rust/futures-0.1.29/src/task_impl/mod.rs:399:9
#26 0x7fa714591d2c in futures::task_impl::Spawn$LT$T$GT$::poll_fn_notify::h4ac14b8254eb1f78 src/third_party/rust/futures-0.1.29/src/task_impl/mod.rs:291:9
#27 0x7fa714591d2c in futures::task_impl::Spawn$LT$T$GT$::poll_future_notify::h80608ccb4d6dee2f src/third_party/rust/futures-0.1.29/src/task_impl/mod.rs:329:9
#28 0x7fa714591d2c in futures::task_impl::std::Run::run::h29b9a8845496ed63 src/third_party/rust/futures-0.1.29/src/task_impl/std/mod.rs:425:23
#29 0x7fa71452259b in futures_cpupool::Inner::work::h8ffd84f0e6366c8b src/third_party/rust/futures-cpupool/src/lib.rs:257:36
#30 0x7fa71452259b in futures_cpupool::Builder::create::_$u7b$$u7b$closure$u7d$$u7d$::hc6fa47108ec74a26 src/third_party/rust/futures-cpupool/src/lib.rs:427:42
#31 0x7fa71452259b in std::sys_common::backtrace::__rust_begin_short_backtrace::h8d38b384b02268d9 /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/sys_common/backtrace.rs:137:18
#32 0x7fa71452407b in std::thread::Builder::spawn_unchecked::_$u7b$$u7b$closure$u7d$$u7d$::_$u7b$$u7b$closure$u7d$$u7d$::h23b0ade49602d605 /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/thread/mod.rs:458:17
#33 0x7fa71452407b in _$LT$std..panic..AssertUnwindSafe$LT$F$GT$$u20$as$u20$core..ops..function..FnOnce$LT$$LP$$RP$$GT$$GT$::call_once::hc98f21a2ad83c30c /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/panic.rs:308:9
#34 0x7fa71452407b in std::panicking::try::do_call::h7a7fadf0d25752c9 /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/panicking.rs:373:40
#35 0x7fa71452407b in std::panicking::try::h2bb20219d5456cc2 /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/panicking.rs:337:19
#36 0x7fa71452407b in std::panic::catch_unwind::h6dfe12a17fcbdb02 /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/panic.rs:379:14
#37 0x7fa71452407b in std::thread::Builder::spawn_unchecked::_$u7b$$u7b$closure$u7d$$u7d$::h3aa27ceae5e48b2d /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/thread/mod.rs:457:30
#38 0x7fa71452407b in core::ops::function::FnOnce::call_once$u7b$$u7b$vtable.shim$u7d$$u7d$::h869fa9dcf3e514c9 /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/core/src/ops/function.rs:227:5
#39 0x7fa714fb8369 in _$LT$alloc..boxed..Box$LT$F$GT$$u20$as$u20$core..ops..function..FnOnce$LT$A$GT$$GT$::call_once::h670c50864ac2cb92 /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/alloc/src/boxed.rs:1042:9
#40 0x7fa714fb8369 in _$LT$alloc..boxed..Box$LT$F$GT$$u20$as$u20$core..ops..function..FnOnce$LT$A$GT$$GT$::call_once::h2511952749086d81 /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/alloc/src/boxed.rs:1042:9
#41 0x7fa714fb8369 in std::sys::unix::thread::Thread::new::thread_start::h5ad4ddffe24373a8 /rustc/18bf6b4f01a6feaf7259ba7cdae58031af1b7b39/library/std/src/sys/unix/thread.rs:87:17
#42 0x7fa7287656da in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x76da)
#43 0x7fa727743a3e in clone /build/glibc-2ORdQG/glibc-2.27/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Flags: in-testsuite?

A Pernosco session is available here: https://pernos.co/debug/b6AMvyyzUS_XY7U22r0TGA/index.html

Bugmon Analysis:
Verified bug as reproducible on mozilla-central 20201117215529-9dd0b13d77b9.
The bug appears to have been introduced in the following build range:

Start: 165cef8cb8ebfd33630ada38b84eeda079facc37 (20191216123605)
End: f21621632fac449db8d93dbecc8a063f84550eef (20191216130609)
Pushlog: https://hg.mozilla.org/integration/autoland/pushloghtml?fromchange=165cef8cb8ebfd33630ada38b84eeda079facc37&tochange=f21621632fac449db8d93dbecc8a063f84550eef

Whiteboard: [bugmon:confirmed] → [bugmon:bisected,confirmed]

Hey Paul, is this an area you're familiar with?

Flags: needinfo?(padenot)
Regressed by: 1427267
Has Regression Range: --- → yes
Assignee: nobody → padenot
Flags: needinfo?(padenot)

I set some priority/severity to get this out of the triage queue. Please feel free to adjust them, Paul.

Severity: -- → S3
Priority: -- → P3

Fixed upstream: https://gitlab.com/soundtouch/soundtouch/-/commit/17a63e99d58053b0fbde8b69d7cc76a38119ce70

This bug is now simply about updating our copy.

Pickup those commits up:
17a63e9 - Fix bug with too small initial skipFract value
6533514 - Improve soundtouch.clear() so that it really clears TDStretch & RateTransposer states
81b0d74 - Correct initial skip value
5e76cf2 - Disable skipping of unaligned SIMD memory offset by default
f38cfa6 - Call "clear()" after changing anti-alias filter on/off
762f560 - Updated versions and documents for release 2.2
1d42d89 - Merge branch 'improve-autovectorization' into 'master'
bf3cec0 - Improvements to help compiler autovectorization

The last two commits should help with performance on ARM, and the others are bug fixes, including the fix for this.

Pickup those commits up:
17a63e9 - Fix bug with too small initial skipFract value
6533514 - Improve soundtouch.clear() so that it really clears TDStretch & RateTransposer states
81b0d74 - Correct initial skip value
5e76cf2 - Disable skipping of unaligned SIMD memory offset by default
f38cfa6 - Call "clear()" after changing anti-alias filter on/off
762f560 - Updated versions and documents for release 2.2
1d42d89 - Merge branch 'improve-autovectorization' into 'master'
bf3cec0 - Improvements to help compiler autovectorization

Pushed by padenot@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/cc182381030a Update libsoundtouch to revision 17a63e9. r=chunmin
Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Target Milestone: --- → 89 Branch
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: