DCHECK failure in clampTo called by Biquad::TailFrame
Reported by
andrew.macpherson@soundtrap.com,
Apr 5 2018
|
|||||
Issue descriptionUserAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36 Steps to reproduce the problem: 1. Log into the Soundtrap studio: https://www.soundtrap.com/studio/ using a ToT debug build. 2. Choose the Pop template. 3. Press play and see the DCHECK failure. What is the expected behavior? What went wrong? Not sure if this causes any issue and I haven't had time to come up with a minimal repro case for this but I wonder if the stack trace alone may give any indication about what might be the problem. If not I can look into creating a minimal repro case. [0405/145239.349321:FATAL:MathExtras.h(368)] Check failed: !std::isnan(static_cast<double>(value)). 0 libbase.dylib 0x0000000102a92a1e base::debug::StackTrace::StackTrace(unsigned long) + 174 1 libbase.dylib 0x0000000102a92add base::debug::StackTrace::StackTrace(unsigned long) + 29 2 libbase.dylib 0x0000000102a90f8c base::debug::StackTrace::StackTrace() + 28 3 libbase.dylib 0x0000000102b2cf9c logging::LogMessage::~LogMessage() + 460 4 libbase.dylib 0x0000000102b2ad05 logging::LogMessage::~LogMessage() + 21 5 libblink_platform.dylib 0x00000001437d1d66 int clampTo<int, double>(double, int, int) + 246 6 libblink_platform.dylib 0x00000001437d0594 blink::Biquad::TailFrame(int, double) + 1908 7 libblink_modules.dylib 0x0000000148a50fab blink::BiquadDSPKernel::UpdateTailTime(int) + 91 8 libblink_modules.dylib 0x0000000148a50eb5 blink::BiquadDSPKernel::UpdateCoefficients(int, float const*, float const*, float const*, float const*) + 693 9 libblink_modules.dylib 0x0000000148a50981 blink::BiquadDSPKernel::UpdateCoefficientsIfNecessary(int) + 689 10 libblink_modules.dylib 0x0000000148a5122f blink::BiquadDSPKernel::Process(float const*, float*, unsigned long) + 559 11 libblink_modules.dylib 0x0000000148a53bbf blink::BiquadProcessor::Process(blink::AudioBus const*, blink::AudioBus*, unsigned long) + 319 12 libblink_modules.dylib 0x000000014899e512 blink::AudioBasicProcessorHandler::Process(unsigned long) + 258 13 libblink_modules.dylib 0x00000001489b8251 blink::AudioHandler::ProcessIfNecessary(unsigned long) + 609 14 libblink_modules.dylib 0x00000001489d41f2 blink::AudioNodeOutput::Pull(blink::AudioBus*, unsigned long) + 594 15 libblink_modules.dylib 0x00000001489cf19b blink::AudioNodeInput::Pull(blink::AudioBus*, unsigned long) + 315 16 libblink_modules.dylib 0x000000014899e60b blink::AudioBasicProcessorHandler::PullInputs(unsigned long) + 75 17 libblink_modules.dylib 0x00000001489b8140 blink::AudioHandler::ProcessIfNecessary(unsigned long) + 336 18 libblink_modules.dylib 0x00000001489d41f2 blink::AudioNodeOutput::Pull(blink::AudioBus*, unsigned long) + 594 19 libblink_modules.dylib 0x00000001489cf19b blink::AudioNodeInput::Pull(blink::AudioBus*, unsigned long) + 315 20 libblink_modules.dylib 0x00000001489b8959 blink::AudioHandler::PullInputs(unsigned long) + 361 21 libblink_modules.dylib 0x00000001489b8140 blink::AudioHandler::ProcessIfNecessary(unsigned long) + 336 22 libblink_modules.dylib 0x00000001489d41f2 blink::AudioNodeOutput::Pull(blink::AudioBus*, unsigned long) + 594 23 libblink_modules.dylib 0x00000001489cf19b blink::AudioNodeInput::Pull(blink::AudioBus*, unsigned long) + 315 24 libblink_modules.dylib 0x00000001489b8959 blink::AudioHandler::PullInputs(unsigned long) + 361 25 libblink_modules.dylib 0x00000001489b8140 blink::AudioHandler::ProcessIfNecessary(unsigned long) + 336 26 libblink_modules.dylib 0x00000001489d41f2 blink::AudioNodeOutput::Pull(blink::AudioBus*, unsigned long) + 594 27 libblink_modules.dylib 0x00000001489cf19b blink::AudioNodeInput::Pull(blink::AudioBus*, unsigned long) + 315 28 libblink_modules.dylib 0x00000001489b8959 blink::AudioHandler::PullInputs(unsigned long) + 361 29 libblink_modules.dylib 0x00000001489b8140 blink::AudioHandler::ProcessIfNecessary(unsigned long) + 336 30 libblink_modules.dylib 0x00000001489d41f2 blink::AudioNodeOutput::Pull(blink::AudioBus*, unsigned long) + 594 31 libblink_modules.dylib 0x00000001489cf19b blink::AudioNodeInput::Pull(blink::AudioBus*, unsigned long) + 315 32 libblink_modules.dylib 0x00000001489b8959 blink::AudioHandler::PullInputs(unsigned long) + 361 33 libblink_modules.dylib 0x00000001489b8140 blink::AudioHandler::ProcessIfNecessary(unsigned long) + 336 34 libblink_modules.dylib 0x00000001489d41f2 blink::AudioNodeOutput::Pull(blink::AudioBus*, unsigned long) + 594 35 libblink_modules.dylib 0x00000001489cf19b blink::AudioNodeInput::Pull(blink::AudioBus*, unsigned long) + 315 36 libblink_modules.dylib 0x00000001489b8959 blink::AudioHandler::PullInputs(unsigned long) + 361 37 libblink_modules.dylib 0x00000001489b8140 blink::AudioHandler::ProcessIfNecessary(unsigned long) + 336 38 libblink_modules.dylib 0x00000001489d41f2 blink::AudioNodeOutput::Pull(blink::AudioBus*, unsigned long) + 594 39 libblink_modules.dylib 0x00000001489cf19b blink::AudioNodeInput::Pull(blink::AudioBus*, unsigned long) + 315 40 libblink_modules.dylib 0x00000001489b8959 blink::AudioHandler::PullInputs(unsigned long) + 361 41 libblink_modules.dylib 0x00000001489b8140 blink::AudioHandler::ProcessIfNecessary(unsigned long) + 336 42 libblink_modules.dylib 0x00000001489d41f2 blink::AudioNodeOutput::Pull(blink::AudioBus*, unsigned long) + 594 43 libblink_modules.dylib 0x00000001489cefe5 blink::AudioNodeInput::SumAllConnections(blink::AudioBus*, unsigned long) + 645 44 libblink_modules.dylib 0x00000001489cf20b blink::AudioNodeInput::Pull(blink::AudioBus*, unsigned long) + 427 45 libblink_modules.dylib 0x00000001489b8959 blink::AudioHandler::PullInputs(unsigned long) + 361 46 libblink_modules.dylib 0x00000001489b8140 blink::AudioHandler::ProcessIfNecessary(unsigned long) + 336 47 libblink_modules.dylib 0x00000001489d41f2 blink::AudioNodeOutput::Pull(blink::AudioBus*, unsigned long) + 594 48 libblink_modules.dylib 0x00000001489cf19b blink::AudioNodeInput::Pull(blink::AudioBus*, unsigned long) + 315 49 libblink_modules.dylib 0x00000001489b8959 blink::AudioHandler::PullInputs(unsigned long) + 361 50 libblink_modules.dylib 0x00000001489b8140 blink::AudioHandler::ProcessIfNecessary(unsigned long) + 336 51 libblink_modules.dylib 0x00000001489d41f2 blink::AudioNodeOutput::Pull(blink::AudioBus*, unsigned long) + 594 52 libblink_modules.dylib 0x00000001489cefe5 blink::AudioNodeInput::SumAllConnections(blink::AudioBus*, unsigned long) + 645 53 libblink_modules.dylib 0x00000001489cf20b blink::AudioNodeInput::Pull(blink::AudioBus*, unsigned long) + 427 54 libblink_modules.dylib 0x00000001489b8959 blink::AudioHandler::PullInputs(unsigned long) + 361 55 libblink_modules.dylib 0x00000001489b8140 blink::AudioHandler::ProcessIfNecessary(unsigned long) + 336 56 libblink_modules.dylib 0x00000001489d41f2 blink::AudioNodeOutput::Pull(blink::AudioBus*, unsigned long) + 594 57 libblink_modules.dylib 0x00000001489cf19b blink::AudioNodeInput::Pull(blink::AudioBus*, unsigned long) + 315 58 libblink_modules.dylib 0x00000001489b8959 blink::AudioHandler::PullInputs(unsigned long) + 361 59 libblink_modules.dylib 0x00000001489b8140 blink::AudioHandler::ProcessIfNecessary(unsigned long) + 336 60 libblink_modules.dylib 0x00000001489d41f2 blink::AudioNodeOutput::Pull(blink::AudioBus*, unsigned long) + 594 61 libblink_modules.dylib 0x00000001489cefe5 blink::AudioNodeInput::SumAllConnections(blink::AudioBus*, unsigned long) + 645 Did this work before? N/A Does this work in other browsers? N/A Chrome version: 67.0.3389.0 Channel: canary OS Version: OS X 10.13.4 Flash Version:
,
Apr 5 2018
Unable to confirm this because I keep hitting issue 828893 instead. The backtrace is pretty clear, though. Somewhere in the computation of the tail time for a biquad, NaN is generated as the tail time. Just need to figure out what the coefficients were at that point and I think it will be easy to fix.
,
Apr 5 2018
,
Apr 5 2018
,
Apr 9 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/74de50bec621d3373c90294cd19aeb00d5782265 commit 74de50bec621d3373c90294cd19aeb00d5782265 Author: Raymond Toy <rtoy@chromium.org> Date: Mon Apr 09 16:28:09 2018 Handle real root case better in Biquad tailtime computation When computing the tail time for a BiquadFilterNode, we forgot to take the absolute value of the largest root when computing the tail. For the test case from the bug, the root with the larger magnitude was negative. Also, the computation of the larger root was incorrect; fix that. And the comments for the real root case was incorrect and wrote "r" when it should have been "r1". Manually verified that the test file causes a DCHECK failure in a debug build without this CL. Bug: 829349 Test: webaudio/BiquadFilter/biquad-829349.html Change-Id: I028331670a61da22a6f42bb7213869dc4cacf8ad Reviewed-on: https://chromium-review.googlesource.com/998518 Commit-Queue: Raymond Toy <rtoy@chromium.org> Reviewed-by: Hongchan Choi <hongchan@chromium.org> Cr-Commit-Position: refs/heads/master@{#549195} [add] https://crrev.com/74de50bec621d3373c90294cd19aeb00d5782265/third_party/WebKit/LayoutTests/webaudio/BiquadFilter/biquad-829349.html [modify] https://crrev.com/74de50bec621d3373c90294cd19aeb00d5782265/third_party/blink/renderer/platform/audio/biquad.cc
,
Apr 10 2018
I can confirm that the DCHECK failure is now fixed in a ToT build from this morning, thanks rtoy!
,
Apr 10 2018
Thanks for checking! |
|||||
►
Sign in to add a comment |
|||||
Comment 1 by ajaynani...@gmail.com
, Apr 5 2018