Bug 217699 - [GLIB] imported/w3c/web-platform-tests/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/cors-check.https.html is crashing since r268365
Summary: [GLIB] imported/w3c/web-platform-tests/webaudio/the-audio-api/the-mediaelemen...
Status: RESOLVED DUPLICATE of bug 216171
Alias: None
Product: WebKit
Classification: Unclassified
Component: Web Audio (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-10-14 02:34 PDT by Diego Pino
Modified: 2020-10-19 05:30 PDT (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Diego Pino 2020-10-14 02:34:07 PDT
The test is crashing with the following stacktrace (https://build.webkit.org/results/GTK-Linux-64-bit-Debug-Tests/r268429%20(7468)/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/cors-check.https-crash-log.txt):

Thread 1 (Thread 0x7f79ce1ff700 (LWP 7711)):
#0  0x00007f7baffa599e in WTFCrash() () at ../../Source/WTF/wtf/Assertions.cpp:295
#1  0x00007f7bbc820b6b in WTFCrashWithInfo(int, char const*, char const*, int) () at DerivedSources/ForwardingHeaders/wtf/Assertions.h:671
#2  0x00007f7bbf581666 in WebCore::AudioWorkletProcessor::process(WTF::Vector<WTF::RefPtr<WebCore::AudioBus, WTF::DumbPtrTraits<WebCore::AudioBus>, WTF::DefaultRefDerefTraits<WebCore::AudioBus> >, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc> const&, WTF::Vector<WTF::Ref<WebCore::AudioBus, WTF::DumbPtrTraits<WebCore::AudioBus> >, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc>&, WTF::HashMap<WTF::String, std::unique_ptr<WebCore::AudioArray<float>, std::default_delete<WebCore::AudioArray<float> > >, WTF::DefaultHash<WTF::String>, WTF::HashTraits<WTF::String>, WTF::HashTraits<std::unique_ptr<WebCore::AudioArray<float>, std::default_delete<WebCore::AudioArray<float> > > > > const&, bool&) (this=0x7f79c82cf9e0, inputs=..., outputs=..., paramValuesMap=..., threwException=@0x7f79ce1fe597: false) at ../../Source/WebCore/Modules/webaudio/AudioWorkletProcessor.cpp:138
#3  0x00007f7bbf5814b2 in WebCore::AudioWorkletNode::process(unsigned long) (this=0x7f7adf80b080, framesToProcess=128) at ../../Source/WebCore/Modules/webaudio/AudioWorkletNode.cpp:219
#4  0x00007f7bbf54da4e in WebCore::AudioNode::processIfNecessary(unsigned long) (this=0x7f7adf80b080, framesToProcess=128) at ../../Source/WebCore/Modules/webaudio/AudioNode.cpp:474
#5  0x00007f7bbf54fec7 in WebCore::AudioNodeOutput::pull(WebCore::AudioBus*, unsigned long) (this=0x7f79ce4fa680, inPlaceBus=0x0, framesToProcess=128) at ../../Source/WebCore/Modules/webaudio/AudioNodeOutput.cpp:120
#6  0x00007f7bbf54fcf6 in WebCore::AudioNodeInput::sumAllConnections(WebCore::AudioBus*, unsigned long) (this=0x7f79ce4fa1a0, summingBus=0x7f79c82a5038, framesToProcess=128) at ../../Source/WebCore/Modules/webaudio/AudioNodeInput.cpp:202
#7  0x00007f7bbf54e127 in WebCore::AudioNodeInput::pull(WebCore::AudioBus*, unsigned long) (this=0x7f79ce4fa1a0, inPlaceBus=0x7f79fc2cea48, framesToProcess=128) at ../../Source/WebCore/Modules/webaudio/AudioNodeInput.cpp:230
#8  0x00007f7bbf520c19 in WebCore::AudioDestinationNode::render(WebCore::AudioBus*, WebCore::AudioBus*, unsigned long, WebCore::AudioIOPosition const&) (this=0x7f7a800102e8, destinationBus=0x7f79fc2cea48, numberOfFrames=128, outputPosition=...) at ../../Source/WebCore/Modules/webaudio/AudioDestinationNode.cpp:90
#9  0x00007f7bbe113958 in webKitWebAudioSrcAllocateBuffersAndRenderAudio(_WebKitWebAudioSrc*) (src=0x1edf340 [WebKitWebAudioSrc|webkitwebaudiosrc16]) at ../../Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:343
#10 0x00007f7bbe1129eb in webKitWebAudioSrcLoop(_WebKitWebAudioSrc*) (src=0x1edf340 [WebKitWebAudioSrc|webkitwebaudiosrc16]) at ../../Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:352
#11 0x00007f7ba9a83cb7 in gst_task_func (task=0x7f792004aef0 [GstTask|task137]) at ../gst/gsttask.c:328
#12 0x00007f7ba90fb784 in g_thread_pool_thread_proxy (data=<optimized out>) at ../glib/gthreadpool.c:354
#13 0x00007f7ba90fae81 in g_thread_proxy (data=0x7f78100019e0) at ../glib/gthread.c:819
#14 0x00007f7baa1c54d2 in start_thread (arg=<optimized out>) at pthread_create.c:477
#15 0x00007f7ba7d0a4d3 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

STDERR: ASSERTION FAILED: globalObject.scriptExecutionContext()->isContextThread()
STDERR: ../../Source/WebCore/Modules/webaudio/AudioWorkletProcessor.cpp(138) : bool WebCore::AudioWorkletProcessor::process(const Vector<RefPtr<WebCore::AudioBus> > &, Vector<Ref<WebCore::AudioBus> > &, const HashMap<WTF::String, std::unique_ptr<AudioFloatArray> > &, bool &)
STDERR: 1   0x7f7baffa5999 WTFCrash
STDERR: 2   0x7f7bbc820b6b /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(+0xb168b6b) [0x7f7bbc820b6b]
STDERR: 3   0x7f7bbf581666 WebCore::AudioWorkletProcessor::process(WTF::Vector<WTF::RefPtr<WebCore::AudioBus, WTF::DumbPtrTraits<WebCore::AudioBus>, WTF::DefaultRefDerefTraits<WebCore::AudioBus> >, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc> const&, WTF::Vector<WTF::Ref<WebCore::AudioBus, WTF::DumbPtrTraits<WebCore::AudioBus> >, 0ul, WTF::CrashOnOverflow, 16ul, WTF::FastMalloc>&, WTF::HashMap<WTF::String, std::unique_ptr<WebCore::AudioArray<float>, std::default_delete<WebCore::AudioArray<float> > >, WTF::DefaultHash<WTF::String>, WTF::HashTraits<WTF::String>, WTF::HashTraits<std::unique_ptr<WebCore::AudioArray<float>, std::default_delete<WebCore::AudioArray<float> > > > > const&, bool&)
Comment 1 Diego Pino 2020-10-15 03:54:42 PDT
imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletprocessor-promises.https.html is a flaky crash with the same stack trace. The flaky crashes have been happening since interval [r268369-r268371]

See: https://build.webkit.org/results/GTK-Linux-64-bit-Debug-Tests/r268508%20(7471)/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audioworklet-interface/audioworkletprocessor-promises.https-crash-log.txt
Comment 2 Chris Dumez 2020-10-15 08:35:33 PDT
(In reply to Diego Pino from comment #1)
> imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audioworklet-
> interface/audioworkletprocessor-promises.https.html is a flaky crash with
> the same stack trace. The flaky crashes have been happening since interval
> [r268369-r268371]
> 
> See:
> https://build.webkit.org/results/GTK-Linux-64-bit-Debug-Tests/
> r268508%20(7471)/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-
> audioworklet-interface/audioworkletprocessor-promises.https-crash-log.txt

GTK port is doing audio rendering on the main thread here for some reason. Audio rendering should never happen on the main thread. Also, when there is in an active audio worklet, rendering should happen on the worklet thread.
Comment 3 Diego Pino 2020-10-16 15:26:06 PDT
imported/w3c/web-platform-tests/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/cors-check.https.html has gone from Crash to Failure after r268579.

Diff: https://build.webkit.org/results/GTK-Linux-64-bit-Release-Tests/r268606%20(16471)/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/cors-check.https-diff.txt

--- /home/buildbot/worker/gtk-linux-64-release-tests/build/layout-test-results/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/cors-check.https-expected.txt
+++ /home/buildbot/worker/gtk-linux-64-release-tests/build/layout-test-results/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-mediaelementaudiosourcenode-interface/cors-check.https-actual.txt
@@ -6,10 +6,10 @@
 PASS > [setting-up-graph]
 PASS < [setting-up-graph] All assertions passed. (total 0 assertions)
 PASS > [start-playback-and-capture]
-PASS   Recorded channel #0 is not constantly 0 (contains 33088 different values).
-PASS   Recorded channel #1 is not constantly 0 (contains 33090 different values).
-PASS   Recorded channel #2 is not constantly 0 (contains 33089 different values).
-PASS   Recorded channel #3 is not constantly 0 (contains 33090 different values).
-PASS < [start-playback-and-capture] All assertions passed. (total 4 assertions)
-PASS # AUDIT TASK RUNNER FINISHED: 2 tasks ran successfully.
+PASS   Recorded channel #0 is not constantly 0 (contains 38977 different values).
+PASS   Recorded channel #1 is not constantly 0 (contains 38979 different values).
+FAIL X Recorded channel #2 should have contain at least one value different from 0. assert_true: expected true got false
+FAIL X Recorded channel #3 should have contain at least one value different from 0. assert_true: expected true got false
+FAIL < [start-playback-and-capture] 2 out of 4 assertions were failed. assert_true: expected true got false
+FAIL # AUDIT TASK RUNNER FINISHED: 1 out of 2 tasks were failed. assert_true: expected true got false
Comment 4 Philippe Normand 2020-10-19 05:30:53 PDT

*** This bug has been marked as a duplicate of bug 216171 ***