New issue
Advanced search Search tips

Issue 828893 link

Starred by 1 user

Issue metadata

Status: Available
Owner: ----
Components:
EstimatedDays: ----
NextAction: ----
OS: Mac
Pri: 2
Type: Bug



Sign in to add a comment

DCHECK failure in AudioNodeInput::Enable

Reported by andrew.macpherson@soundtrap.com, Apr 4 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. Go to https://jsfiddle.net/j5v2h9pc/1/ with a ToT debug build.
2. Click Start.
3. See attached DCHECK failure.

What is the expected behavior?

What went wrong?
This failure doesn't seem to cause any visible issue and so is probably very low priority, just filing this as I came across it while debugging.

[0404/171122.419745:FATAL:AudioNodeInput.cpp(103)] Check failed: disabled_outputs_.Contains(&output).
0   libbase.dylib                       0x000000010685c34e base::debug::StackTrace::StackTrace(unsigned long) + 174
1   libbase.dylib                       0x000000010685c40d base::debug::StackTrace::StackTrace(unsigned long) + 29
2   libbase.dylib                       0x000000010685a8bc base::debug::StackTrace::StackTrace() + 28
3   libbase.dylib                       0x00000001068f68cc logging::LogMessage::~LogMessage() + 460
4   libbase.dylib                       0x00000001068f4635 logging::LogMessage::~LogMessage() + 21
5   libblink_modules.dylib              0x000000014c5b5fe1 blink::AudioNodeInput::Enable(blink::AudioNodeOutput&) + 465
6   libblink_modules.dylib              0x000000014c5bd3e9 blink::AudioNodeOutput::Enable() + 345
7   libblink_modules.dylib              0x000000014c5a077b blink::AudioHandler::EnableOutputsIfNecessary() + 395
8   libblink_modules.dylib              0x000000014c5b602c blink::AudioNodeInput::Enable(blink::AudioNodeOutput&) + 540
9   libblink_modules.dylib              0x000000014c5bd3e9 blink::AudioNodeOutput::Enable() + 345
10  libblink_modules.dylib              0x000000014c5a077b blink::AudioHandler::EnableOutputsIfNecessary() + 395
11  libblink_modules.dylib              0x000000014c5b602c blink::AudioNodeInput::Enable(blink::AudioNodeOutput&) + 540
12  libblink_modules.dylib              0x000000014c5bd3e9 blink::AudioNodeOutput::Enable() + 345
13  libblink_modules.dylib              0x000000014c5a077b blink::AudioHandler::EnableOutputsIfNecessary() + 395
14  libblink_modules.dylib              0x000000014c5a0ac3 blink::AudioHandler::MakeConnection() + 115
15  libblink_modules.dylib              0x000000014c5bc229 blink::AudioNodeOutput::AddInput(blink::AudioNodeInput&) + 281
16  libblink_modules.dylib              0x000000014c5b57ca blink::AudioNodeInput::Connect(blink::AudioNodeOutput&) + 282
17  libblink_modules.dylib              0x000000014c5a1e80 blink::AudioNode::connect(blink::AudioNode*, unsigned int, unsigned int, blink::ExceptionState&) + 1440
18  libblink_modules.dylib              0x000000014b9682f2 blink::AudioNodeV8Internal::connect1Method(v8::FunctionCallbackInfo<v8::Value> const&) + 3122
19  libblink_modules.dylib              0x000000014b965c71 blink::AudioNodeV8Internal::connectMethod(v8::FunctionCallbackInfo<v8::Value> const&) + 897
20  libblink_modules.dylib              0x000000014b9658ea blink::V8AudioNode::connectMethodCallback(v8::FunctionCallbackInfo<v8::Value> const&) + 26
21  libv8.dylib                         0x00000001046599da v8::internal::FunctionCallbackArguments::Call(v8::internal::CallHandlerInfo*) + 506
22  libv8.dylib                         0x0000000104761cdf v8::internal::MaybeHandle<v8::internal::Object> v8::internal::(anonymous namespace)::HandleApiCallHelper<false>(v8::internal::Isolate*, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::Handle<v8::internal::FunctionTemplateInfo>, v8::internal::Handle<v8::internal::Object>, v8::internal::BuiltinArguments) + 1503
23  libv8.dylib                         0x000000010475fb0f v8::internal::Builtin_Impl_HandleApiCall(v8::internal::BuiltinArguments, v8::internal::Isolate*) + 719
24  libv8.dylib                         0x000000010475f5ff v8::internal::Builtin_HandleApiCall(int, v8::internal::Object**, v8::internal::Isolate*) + 191
25  ???                                 0x000000237d104632 0x0 + 152422073906
26  ???                                 0x000000237d11c439 0x0 + 152422171705

Did this work before? N/A 

Does this work in other browsers? N/A

Chrome version: 67.0.3387.0  Channel: canary
OS Version: OS X 10.13.4
Flash Version:
 
Labels: Needs-Triage-M67

Comment 2 Deleted

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

I can repro this easily.  Not sure what's going on.  Perhaps related to tail processing change?

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

The repro case does

  gain154.connect(gain152);
  gain148.connect(gain154);
  gain140.connect(gain142);
  gain142.connect(gain144);
  gain144.connect(gain146);
  gain146.connect(gain148);
  gain142.disconnect();
  gain148.disconnect();
  gain148.connect(gain152);
  gain142.connect(gain144);

When gain142 disconnects from downstream nodes, nodes 146, 148, 154, and 152 have their outputs placed on the disabled_outputs table.  (This is an optimization to prevent processing a graph where there are no outputs.)

gain148 disconnects and does the same thing, but the outputs are already on the disabled_outputs table.

When gain148 connects to 152, the output of 152 is re-enabled.

When gain142 connects to 144, the outputs of 144, 146, 148 are re-enabled. But 148 has a disabled_output connected to 154, but 148 isn't connected to 154 anymore so something gets confused trying to re-enable the disabled_outputs list.

I think.

Sign in to add a comment