New issue
Advanced search Search tips

Issue 678802 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Jan 2017
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug



Sign in to add a comment

Assertion failure at AudioParamTimeline::valuesForFrameRangeImpl

Project Member Reported by hongchan@chromium.org, Jan 5 2017

Issue description

- OSX, Version 57.0.2974.0 (ToT)

To reproduce the issue:
1. Go to: https://musiclab.chromeexperiments.com/Piano-Roll
2. Play 10 seconds and stop. Repeat 2~3 times.

Stack trace from debug build:
[5214:36419:0105/145638.874473:FATAL:AudioParamTimeline.cpp(668)] Check failed: fillToEndFrame >= startFrame (904024 vs. 911616)
0   libbase.dylib                       0x000000011ff1c05e base::debug::StackTrace::StackTrace()   30
1   libbase.dylib                       0x000000011ff1c0c5 base::debug::StackTrace::StackTrace()   21
2   libbase.dylib                       0x000000011ffb4300 logging::LogMessage::~LogMessage()   80
3   libbase.dylib                       0x000000011ffb1e05 logging::LogMessage::~LogMessage()   21
4   libblink_modules.dylib              0x0000000143d3729d blink::AudioParamTimeline::valuesForFrameRangeImpl(unsigned long, unsigned long, float, float*, unsigned int, double, double)   3773
5   libblink_modules.dylib              0x0000000143d36337 blink::AudioParamTimeline::valuesForFrameRange(unsigned long, unsigned long, float, float*, unsigned int, double, double, float, float)   247
6   libblink_modules.dylib              0x0000000143d2dfdf blink::AudioParamHandler::calculateTimelineValues(float*, unsigned int)   255
7   libblink_modules.dylib              0x0000000143d2da44 blink::AudioParamHandler::calculateFinalValues(float*, unsigned int, bool)   404
8   libblink_modules.dylib              0x0000000143d2deb3 blink::AudioParamHandler::calculateSampleAccurateValues(float*, unsigned int)   387
9   libblink_modules.dylib              0x0000000143d750e1 blink::GainHandler::process(unsigned long)   721
10  libblink_modules.dylib              0x0000000143d05f40 blink::AudioHandler::processIfNecessary(unsigned long)   608
11  libblink_modules.dylib              0x0000000143d244b2 blink::AudioNodeOutput::pull(blink::AudioBus*, unsigned long)   722
12  libblink_modules.dylib              0x0000000143d2dcbe blink::AudioParamHandler::calculateFinalValues(float*, unsigned int, bool)   1038
13  libblink_modules.dylib              0x0000000143d2deb3 blink::AudioParamHandler::calculateSampleAccurateValues(float*, unsigned int)   387
14  libblink_modules.dylib              0x0000000143d750e1 blink::GainHandler::process(unsigned long)   721
15  libblink_modules.dylib              0x0000000143d05f40 blink::AudioHandler::processIfNecessary(unsigned long)   608
16  libblink_modules.dylib              0x0000000143d244b2 blink::AudioNodeOutput::pull(blink::AudioBus*, unsigned long)   722
17  libblink_modules.dylib              0x0000000143d1f0cc blink::AudioNodeInput::pull(blink::AudioBus*, unsigned long)   364
18  libblink_modules.dylib              0x0000000143d066bd blink::AudioHandler::pullInputs(unsigned long)   413
19  libblink_modules.dylib              0x0000000143d05e67 blink::AudioHandler::processIfNecessary(unsigned long)   391
20  libblink_modules.dylib              0x0000000143d244b2 blink::AudioNodeOutput::pull(blink::AudioBus*, unsigned long)   722
21  libblink_modules.dylib              0x0000000143d1eee5 blink::AudioNodeInput::sumAllConnections(blink::AudioBus*, unsigned long)   789
22  libblink_modules.dylib              0x0000000143d1f13c blink::AudioNodeInput::pull(blink::AudioBus*, unsigned long)   476
23  libblink_modules.dylib              0x0000000143d066bd blink::AudioHandler::pullInputs(unsigned long)   413
24  libblink_modules.dylib              0x0000000143d05e67 blink::AudioHandler::processIfNecessary(unsigned long)   391
25  libblink_modules.dylib              0x0000000143d244b2 blink::AudioNodeOutput::pull(blink::AudioBus*, unsigned long)   722
26  libblink_modules.dylib              0x0000000143d1eee5 blink::AudioNodeInput::sumAllConnections(blink::AudioBus*, unsigned long)   789
27  libblink_modules.dylib              0x0000000143d1f13c blink::AudioNodeInput::pull(blink::AudioBus*, unsigned long)   476
28  libblink_modules.dylib              0x0000000143d066bd blink::AudioHandler::pullInputs(unsigned long)   413
29  libblink_modules.dylib              0x0000000143d05e67 blink::AudioHandler::processIfNecessary(unsigned long)   391
30  libblink_modules.dylib              0x0000000143d244b2 blink::AudioNodeOutput::pull(blink::AudioBus*, unsigned long)   722
31  libblink_modules.dylib              0x0000000143d1f0cc blink::AudioNodeInput::pull(blink::AudioBus*, unsigned long)   364
32  libblink_modules.dylib              0x0000000143d066bd blink::AudioHandler::pullInputs(unsigned long)   413
33  libblink_modules.dylib              0x0000000143d05e67 blink::AudioHandler::processIfNecessary(unsigned long)   391
34  libblink_modules.dylib              0x0000000143d244b2 blink::AudioNodeOutput::pull(blink::AudioBus*, unsigned long)   722
35  libblink_modules.dylib              0x0000000143d1eee5 blink::AudioNodeInput::sumAllConnections(blink::AudioBus*, unsigned long)   789
36  libblink_modules.dylib              0x0000000143d1f13c blink::AudioNodeInput::pull(blink::AudioBus*, unsigned long)   476
37  libblink_modules.dylib              0x0000000143cfbddb blink::AudioDestinationHandler::render(blink::AudioBus*, blink::AudioBus*, unsigned long, blink::AudioIOPosition const&)   779
38  libblink_platform.dylib             0x0000000138420bb9 blink::AudioDestination::provideInput(blink::AudioBus*, unsigned long)   233
39  libblink_platform.dylib             0x0000000138421bc5 blink::AudioPullFIFO::fillBuffer(unsigned long)   101
40  libblink_platform.dylib             0x0000000138421b1c blink::AudioPullFIFO::consume(blink::AudioBus*, unsigned long)   124
41  libblink_platform.dylib             0x00000001384208fe blink::AudioDestination::render(blink::WebVector<float*> const&, unsigned long, double, double, unsigned long)   1022
42  libcontent.dylib                    0x00000001286b5561 content::RendererWebAudioDeviceImpl::Render(base::TimeDelta, base::TimeTicks, int, media::AudioBus*)   689
43  libmedia.dylib                      0x00000001316d9c1e media::AudioRendererMixerInput::ProvideInput(media::AudioBus*, unsigned int)   398
44  libmedia.dylib                      0x00000001316c83b7 media::AudioConverter::SourceCallback(int, media::AudioBus*)   2647
45  libmedia.dylib                      0x00000001316cac93 media::AudioConverter::ConvertWithDelay(unsigned int, media::AudioBus*)   755
46  libmedia.dylib                      0x00000001316d5bc3 media::AudioRendererMixer::Render(base::TimeDelta, base::TimeTicks, int, media::AudioBus*)   627
47  libmedia.dylib                      0x000000013164403b media::AudioOutputDevice::AudioThreadCallback::Process(unsigned int)   1291
48  libmedia.dylib                      0x0000000131604e25 media::AudioDeviceThread::ThreadMain()   1221
49  libbase.dylib                       0x00000001201c7df1 base::(anonymous namespace)::ThreadFunc(void*)   705
50  libsystem_pthread.dylib             0x00007fff9e71c99d _pthread_body   131
51  libsystem_pthread.dylib             0x00007fff9e71c91a _pthread_body   0
52  libsystem_pthread.dylib             0x00007fff9e71a351 thread_start   13


 
Description: Show this description

Comment 2 by rtoy@chromium.org, Jan 5 2017

Owner: rtoy@chromium.org
Status: Assigned (was: Untriaged)
Project Member

Comment 3 by bugdroid1@chromium.org, Jan 9 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2d2dfb10fa78a88b6ac615b8041948b13df181bb

commit 2d2dfb10fa78a88b6ac615b8041948b13df181bb
Author: rtoy <rtoy@chromium.org>
Date: Mon Jan 09 22:44:30 2017

Sort event list if any event time was clamped

Per spec, if an AudioParam event is scheduled in the past, the event
time is clamped to the current time.  However, this clamping can
change to time order of the event list so that it is no longer in
sorted order.

Thus, if any event has it's time clamped, the event list needs to be
sorted in time order again.  The sort must be stable to preserve the
behavior of events that were scheduled at the same time.

Some additional DCHECKs added to verify sorted order.

Unable to come up with a test for this using an offline context.

BUG= 678802 
TEST=Run test from bug report.

Review-Url: https://codereview.chromium.org/2623563002
Cr-Commit-Position: refs/heads/master@{#442382}

[modify] https://crrev.com/2d2dfb10fa78a88b6ac615b8041948b13df181bb/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp
[modify] https://crrev.com/2d2dfb10fa78a88b6ac615b8041948b13df181bb/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.h

Comment 4 by rtoy@chromium.org, Jan 11 2017

Status: Fixed (was: Assigned)

Sign in to add a comment