New issue
Advanced search Search tips

Issue 829349 link

Starred by 1 user

Issue metadata

Status: Verified
Owner:
Closed: Apr 2018
Components:
EstimatedDays: ----
NextAction: ----
OS: Mac
Pri: 2
Type: Bug



Sign in to add a comment

DCHECK failure in clampTo called by Biquad::TailFrame

Reported by andrew.macpherson@soundtrap.com, Apr 5 2018

Issue description

UserAgent: 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:
 

Comment 2 by rtoy@chromium.org, Apr 5 2018

Owner: rtoy@chromium.org
Status: Available (was: Unconfirmed)
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.

Comment 3 by rtoy@chromium.org, Apr 5 2018

Status: Assigned (was: Available)

Comment 4 by rtoy@chromium.org, Apr 5 2018

Status: Started (was: Assigned)
Project Member

Comment 5 by bugdroid1@chromium.org, 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

I can confirm that the DCHECK failure is now fixed in a ToT build from this morning, thanks rtoy!

Comment 7 by rtoy@chromium.org, Apr 10 2018

Status: Verified (was: Started)
Thanks for checking!

Sign in to add a comment