Bug 216673 - Vectorize SetTargetAtTime processing in AudioParamTimeline
Summary: Vectorize SetTargetAtTime processing in AudioParamTimeline
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Web Audio (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Chris Dumez
URL:
Keywords: InRadar
Depends on:
Blocks: 212611
  Show dependency treegraph
 
Reported: 2020-09-17 16:34 PDT by Chris Dumez
Modified: 2020-09-18 09:43 PDT (History)
9 users (show)

See Also:


Attachments
Patch (38.28 KB, patch)
2020-09-17 16:45 PDT, Chris Dumez
no flags Details | Formatted Diff | Diff
Patch (38.29 KB, patch)
2020-09-17 16:55 PDT, Chris Dumez
no flags Details | Formatted Diff | Diff
Patch (41.13 KB, patch)
2020-09-17 17:40 PDT, Chris Dumez
no flags Details | Formatted Diff | Diff
SSE implementation fix (3.07 KB, patch)
2020-09-18 09:00 PDT, Chris Dumez
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Chris Dumez 2020-09-17 16:34:08 PDT
Vectorize SetTargetAtTime processing in AudioParamTimeline.
Comment 1 Chris Dumez 2020-09-17 16:45:23 PDT
Created attachment 409087 [details]
Patch
Comment 2 Sam Weinig 2020-09-17 16:55:24 PDT
Comment on attachment 409087 [details]
Patch

Can this use the WebCore::VectorMath::vsmul instead? If there is some difference, could we move these there?
Comment 3 Chris Dumez 2020-09-17 16:55:49 PDT
Created attachment 409089 [details]
Patch
Comment 4 Chris Dumez 2020-09-17 16:57:09 PDT
(In reply to Sam Weinig from comment #2)
> Comment on attachment 409087 [details]
> Patch
> 
> Can this use the WebCore::VectorMath::vsmul instead? If there is some
> difference, could we move these there?

Not familiar with VectorMath::vsmul. Let me check.
Comment 5 Chris Dumez 2020-09-17 17:40:18 PDT
Created attachment 409094 [details]
Patch
Comment 6 EWS 2020-09-17 18:33:11 PDT
Committed r267218: <https://trac.webkit.org/changeset/267218>

All reviewed patches have been landed. Closing bug and clearing flags on attachment 409094 [details].
Comment 7 Radar WebKit Bug Importer 2020-09-17 18:34:17 PDT
<rdar://problem/69111432>
Comment 8 Philippe Normand 2020-09-18 00:24:36 PDT
This patch introduced a new crash in GTK: imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-setTargetAtTime.html

https://build.webkit.org/results/GTK%20Linux%2064-bit%20Release%20(Tests)/r267224%20(15899)/imported/w3c/web-platform-tests/webaudio/the-audio-api/the-audioparam-interface/audioparam-setTargetAtTime-crash-log.txt

Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007fad0c4bbdc0 in WebCore::VectorMath::vsadd(float const*, int, float const*, float*, int, unsigned long) () from /app/webkit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
[Current thread is 1 (Thread 0x7f972d6fa700 (LWP 57819))]

...
Thread 1 (Thread 0x7f972d6fa700 (LWP 57819)):
#0  0x00007fad0c4bbdc0 in WebCore::VectorMath::vsadd(float const*, int, float const*, float*, int, unsigned long) () at /app/webkit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#1  0x00007fad0ba88690 in WebCore::AudioParamTimeline::processSetTarget(float*, unsigned int&, unsigned int, float&, float, float) () at /app/webkit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#2  0x00007fad0ba87a50 in WebCore::AudioParamTimeline::valuesForTimeRangeImpl(unsigned long, unsigned long, float, float*, unsigned int, double, double) () at /app/webkit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#3  0x00007fad0ba85ad2 in WebCore::AudioParam::calculateTimelineValues(float*, unsigned int) () at /app/webkit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#4  0x00007fad0ba856d3 in WebCore::AudioParam::calculateFinalValues(float*, unsigned int, bool) () at /app/webkit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#5  0x00007fad0baa4605 in WebCore::GainNode::process(unsigned long) () at /app/webkit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#6  0x00007fad0ba81b5f in WebCore::AudioNodeInput::pull(WebCore::AudioBus*, unsigned long) () at /app/webkit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#7  0x00007fad0ba7316c in WebCore::AudioDestinationNode::render(WebCore::AudioBus*, WebCore::AudioBus*, unsigned long, WebCore::AudioIOPosition const&) () at /app/webkit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#8  0x00007fad0bab2e5b in WebCore::OfflineAudioDestinationNode::offlineRender() () at /app/webkit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#9  0x00007fad0babc9f4 in WTF::Detail::CallableWrapper<WebCore::OfflineAudioDestinationNode::startRendering()::$_0, void>::call() () at /app/webkit/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
#10 0x00007fad084893a0 in WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) () at /app/webkit/WebKitBuild/Release/lib/libjavascriptcoregtk-4.0.so.18
#11 0x00007fad084e16f6 in WTF::wtfThreadEntryPoint(void*) () at /app/webkit/WebKitBuild/Release/lib/libjavascriptcoregtk-4.0.so.18
#12 0x00007fad050294d2 in start_thread (arg=<optimized out>) at pthread_create.c:477
#13 0x00007fad02ba14d3 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Comment 9 Philippe Normand 2020-09-18 00:26:51 PDT
In Debug:
#0  0x00007ff0b81ded8a in WebCore::VectorMath::vsadd (sourceP=0x7ff04d9956ac, sourceStride=1, scalar=0x7ff02adfc640, destP=0x7ff04d9956ac, destStride=1, framesToProcess=4) at ../../Source/WebCore/platform/audio/VectorMath.cpp:273
273	            __m128 dest = _mm_add_ps(*pSource, scalarVector);

Thread 1 (Thread 0x7ff02adfd700 (LWP 48634)):
#0  0x00007ff0b81ded8a in WebCore::VectorMath::vsadd(float const*, int, float const*, float*, int, unsigned long) (sourceP=0x7ff04d9956ac, sourceStride=1, scalar=0x7ff02adfc640, destP=0x7ff04d9956ac, destStride=1, framesToProcess=4) at ../../Source/WebCore/platform/audio/VectorMath.cpp:273
#1  0x00007ff0b6beee4c in WebCore::AudioParamTimeline::processSetTarget(float*, unsigned int&, unsigned int, float&, float, float) (this=0x7ff03325a2d0, values=0x7ff04d995600, writeIndex=@0x7ff02adfc664: 43, fillToFrame=128, value=@0x7ff02adfc640: 99, target=98.5, discreteTimeConstant=0.00226500467) at ../../Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp:658
#2  0x00007ff0b6bee020 in WebCore::AudioParamTimeline::valuesForTimeRangeImpl(unsigned long, unsigned long, float, float*, unsigned int, double, double) (this=0x7ff03325a2d0, startFrame=1280, endFrame=1408, defaultValue=100.472504, values=0x7ff04d995600, numberOfValues=128, sampleRate=44100, controlRate=44100) at ../../Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp:523
#3  0x00007ff0b6bebad9 in WebCore::AudioParamTimeline::valuesForTimeRange(unsigned long, unsigned long, float, float, float, float*, unsigned int, double, double) (this=0x7ff03325a2d0, startFrame=1280, endFrame=1408, defaultValue=100.472504, minValue=-3.40282347e+38, maxValue=3.40282347e+38, values=0x7ff04d995600, numberOfValues=128, sampleRate=44100, controlRate=44100) at ../../Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp:338
#4  0x00007ff0b6beb9db in WebCore::AudioParam::calculateTimelineValues(float*, unsigned int) (this=0x7ff03325a260, values=0x7ff04d995600, numberOfValues=128) at ../../Source/WebCore/Modules/webaudio/AudioParam.cpp:310
#5  0x00007ff0b6beb5e9 in WebCore::AudioParam::calculateFinalValues(float*, unsigned int, bool) (this=0x7ff03325a260, values=0x7ff04d995600, numberOfValues=128, sampleAccurate=true) at ../../Source/WebCore/Modules/webaudio/AudioParam.cpp:254
#6  0x00007ff0b6be1dd5 in WebCore::AudioParam::calculateSampleAccurateValues(float*, unsigned int) (this=0x7ff03325a260, values=0x7ff04d995600, numberOfValues=128) at ../../Source/WebCore/Modules/webaudio/AudioParam.cpp:240
#7  0x00007ff0b6c339b7 in WebCore::GainNode::process(unsigned long) (this=0x7ff04dc50a80, framesToProcess=128) at ../../Source/WebCore/Modules/webaudio/GainNode.cpp:90
#8  0x00007ff0b6be62fa in WebCore::AudioNode::processIfNecessary(unsigned long) (this=0x7ff04dc50a80, framesToProcess=128) at ../../Source/WebCore/Modules/webaudio/AudioNode.cpp:481
#9  0x00007ff0b6be8557 in WebCore::AudioNodeOutput::pull(WebCore::AudioBus*, unsigned long) (this=0x7ff0303b2ea0, inPlaceBus=0x0, framesToProcess=128) at ../../Source/WebCore/Modules/webaudio/AudioNodeOutput.cpp:123
#10 0x00007ff0b6be8386 in WebCore::AudioNodeInput::sumAllConnections(WebCore::AudioBus*, unsigned long) (this=0x7ff0303b2d00, summingBus=0x7ff04d98c000, framesToProcess=128) at ../../Source/WebCore/Modules/webaudio/AudioNodeInput.cpp:206
#11 0x00007ff0b6be6967 in WebCore::AudioNodeInput::pull(WebCore::AudioBus*, unsigned long) (this=0x7ff0303b2d00, inPlaceBus=0x7ff04d9445e8, framesToProcess=128) at ../../Source/WebCore/Modules/webaudio/AudioNodeInput.cpp:234
#12 0x00007ff0b6bb2f51 in WebCore::AudioDestinationNode::render(WebCore::AudioBus*, WebCore::AudioBus*, unsigned long, WebCore::AudioIOPosition const&) (this=0x7ff04dc25e60, destinationBus=0x7ff04d9445e8, numberOfFrames=128, outputPosition=...) at ../../Source/WebCore/Modules/webaudio/AudioDestinationNode.cpp:85
#13 0x00007ff0b6c51c3a in WebCore::OfflineAudioDestinationNode::offlineRender() (this=0x7ff04dc25e60) at ../../Source/WebCore/Modules/webaudio/OfflineAudioDestinationNode.cpp:151
#14 0x00007ff0b6c5cfef in WebCore::OfflineAudioDestinationNode::startRendering()::$_0::operator()() const (this=0x7ff04d9f73f8) at ../../Source/WebCore/Modules/webaudio/OfflineAudioDestinationNode.cpp:102
#15 0x00007ff0b6c5cfbe in WTF::Detail::CallableWrapper<WebCore::OfflineAudioDestinationNode::startRendering()::$_0, void>::call() (this=0x7ff04d9f73f0) at DerivedSources/ForwardingHeaders/wtf/Function.h:52
#16 0x00007ff0b3eecf72 in WTF::Function<void ()>::operator()() const (this=0x7ff02adfcc40) at DerivedSources/ForwardingHeaders/wtf/Function.h:83
#17 0x00007ff0a7a9d4f8 in WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) (newThreadContext=0x7ff04dd18eb0) at ../../Source/WTF/wtf/Threading.cpp:179
#18 0x00007ff0a7b3a378 in WTF::wtfThreadEntryPoint(void*) (context=0x7ff04dd18eb0) at ../../Source/WTF/wtf/posix/ThreadingPOSIX.cpp:213
#19 0x00007ff0a1d904d2 in start_thread (arg=<optimized out>) at pthread_create.c:477
#20 0x00007ff09f9084d3 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Comment 10 Chris Dumez 2020-09-18 08:31:09 PDT
(In reply to Philippe Normand from comment #9)
> In Debug:
> #0  0x00007ff0b81ded8a in WebCore::VectorMath::vsadd
> (sourceP=0x7ff04d9956ac, sourceStride=1, scalar=0x7ff02adfc640,
> destP=0x7ff04d9956ac, destStride=1, framesToProcess=4) at
> ../../Source/WebCore/platform/audio/VectorMath.cpp:273
> 273	            __m128 dest = _mm_add_ps(*pSource, scalarVector);
> 
> Thread 1 (Thread 0x7ff02adfd700 (LWP 48634)):
> #0  0x00007ff0b81ded8a in WebCore::VectorMath::vsadd(float const*, int,
> float const*, float*, int, unsigned long) (sourceP=0x7ff04d9956ac,
> sourceStride=1, scalar=0x7ff02adfc640, destP=0x7ff04d9956ac, destStride=1,
> framesToProcess=4) at ../../Source/WebCore/platform/audio/VectorMath.cpp:273
> #1  0x00007ff0b6beee4c in
> WebCore::AudioParamTimeline::processSetTarget(float*, unsigned int&,
> unsigned int, float&, float, float) (this=0x7ff03325a2d0,
> values=0x7ff04d995600, writeIndex=@0x7ff02adfc664: 43, fillToFrame=128,
> value=@0x7ff02adfc640: 99, target=98.5, discreteTimeConstant=0.00226500467)
> at ../../Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp:658
> #2  0x00007ff0b6bee020 in
> WebCore::AudioParamTimeline::valuesForTimeRangeImpl(unsigned long, unsigned
> long, float, float*, unsigned int, double, double) (this=0x7ff03325a2d0,
> startFrame=1280, endFrame=1408, defaultValue=100.472504,
> values=0x7ff04d995600, numberOfValues=128, sampleRate=44100,
> controlRate=44100) at
> ../../Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp:523
> #3  0x00007ff0b6bebad9 in
> WebCore::AudioParamTimeline::valuesForTimeRange(unsigned long, unsigned
> long, float, float, float, float*, unsigned int, double, double)
> (this=0x7ff03325a2d0, startFrame=1280, endFrame=1408,
> defaultValue=100.472504, minValue=-3.40282347e+38, maxValue=3.40282347e+38,
> values=0x7ff04d995600, numberOfValues=128, sampleRate=44100,
> controlRate=44100) at
> ../../Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp:338
> #4  0x00007ff0b6beb9db in
> WebCore::AudioParam::calculateTimelineValues(float*, unsigned int)
> (this=0x7ff03325a260, values=0x7ff04d995600, numberOfValues=128) at
> ../../Source/WebCore/Modules/webaudio/AudioParam.cpp:310
> #5  0x00007ff0b6beb5e9 in WebCore::AudioParam::calculateFinalValues(float*,
> unsigned int, bool) (this=0x7ff03325a260, values=0x7ff04d995600,
> numberOfValues=128, sampleAccurate=true) at
> ../../Source/WebCore/Modules/webaudio/AudioParam.cpp:254
> #6  0x00007ff0b6be1dd5 in
> WebCore::AudioParam::calculateSampleAccurateValues(float*, unsigned int)
> (this=0x7ff03325a260, values=0x7ff04d995600, numberOfValues=128) at
> ../../Source/WebCore/Modules/webaudio/AudioParam.cpp:240
> #7  0x00007ff0b6c339b7 in WebCore::GainNode::process(unsigned long)
> (this=0x7ff04dc50a80, framesToProcess=128) at
> ../../Source/WebCore/Modules/webaudio/GainNode.cpp:90
> #8  0x00007ff0b6be62fa in WebCore::AudioNode::processIfNecessary(unsigned
> long) (this=0x7ff04dc50a80, framesToProcess=128) at
> ../../Source/WebCore/Modules/webaudio/AudioNode.cpp:481
> #9  0x00007ff0b6be8557 in WebCore::AudioNodeOutput::pull(WebCore::AudioBus*,
> unsigned long) (this=0x7ff0303b2ea0, inPlaceBus=0x0, framesToProcess=128) at
> ../../Source/WebCore/Modules/webaudio/AudioNodeOutput.cpp:123
> #10 0x00007ff0b6be8386 in
> WebCore::AudioNodeInput::sumAllConnections(WebCore::AudioBus*, unsigned
> long) (this=0x7ff0303b2d00, summingBus=0x7ff04d98c000, framesToProcess=128)
> at ../../Source/WebCore/Modules/webaudio/AudioNodeInput.cpp:206
> #11 0x00007ff0b6be6967 in WebCore::AudioNodeInput::pull(WebCore::AudioBus*,
> unsigned long) (this=0x7ff0303b2d00, inPlaceBus=0x7ff04d9445e8,
> framesToProcess=128) at
> ../../Source/WebCore/Modules/webaudio/AudioNodeInput.cpp:234
> #12 0x00007ff0b6bb2f51 in
> WebCore::AudioDestinationNode::render(WebCore::AudioBus*,
> WebCore::AudioBus*, unsigned long, WebCore::AudioIOPosition const&)
> (this=0x7ff04dc25e60, destinationBus=0x7ff04d9445e8, numberOfFrames=128,
> outputPosition=...) at
> ../../Source/WebCore/Modules/webaudio/AudioDestinationNode.cpp:85
> #13 0x00007ff0b6c51c3a in
> WebCore::OfflineAudioDestinationNode::offlineRender() (this=0x7ff04dc25e60)
> at ../../Source/WebCore/Modules/webaudio/OfflineAudioDestinationNode.cpp:151
> #14 0x00007ff0b6c5cfef in
> WebCore::OfflineAudioDestinationNode::startRendering()::$_0::operator()()
> const (this=0x7ff04d9f73f8) at
> ../../Source/WebCore/Modules/webaudio/OfflineAudioDestinationNode.cpp:102
> #15 0x00007ff0b6c5cfbe in
> WTF::Detail::CallableWrapper<WebCore::OfflineAudioDestinationNode::
> startRendering()::$_0, void>::call() (this=0x7ff04d9f73f0) at
> DerivedSources/ForwardingHeaders/wtf/Function.h:52
> #16 0x00007ff0b3eecf72 in WTF::Function<void ()>::operator()() const
> (this=0x7ff02adfcc40) at DerivedSources/ForwardingHeaders/wtf/Function.h:83
> #17 0x00007ff0a7a9d4f8 in
> WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*)
> (newThreadContext=0x7ff04dd18eb0) at ../../Source/WTF/wtf/Threading.cpp:179
> #18 0x00007ff0a7b3a378 in WTF::wtfThreadEntryPoint(void*)
> (context=0x7ff04dd18eb0) at ../../Source/WTF/wtf/posix/ThreadingPOSIX.cpp:213
> #19 0x00007ff0a1d904d2 in start_thread (arg=<optimized out>) at
> pthread_create.c:477
> #20 0x00007ff09f9084d3 in clone () at
> ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Ok, taking a look now. Weird, I am pretty sure I tested the SSE version of vsadd() on my machine..
Comment 11 Chris Dumez 2020-09-18 08:44:31 PDT
(In reply to Chris Dumez from comment #10)
> (In reply to Philippe Normand from comment #9)
> > In Debug:
> > #0  0x00007ff0b81ded8a in WebCore::VectorMath::vsadd
> > (sourceP=0x7ff04d9956ac, sourceStride=1, scalar=0x7ff02adfc640,
> > destP=0x7ff04d9956ac, destStride=1, framesToProcess=4) at
> > ../../Source/WebCore/platform/audio/VectorMath.cpp:273
> > 273	            __m128 dest = _mm_add_ps(*pSource, scalarVector);
> > 
> > Thread 1 (Thread 0x7ff02adfd700 (LWP 48634)):
> > #0  0x00007ff0b81ded8a in WebCore::VectorMath::vsadd(float const*, int,
> > float const*, float*, int, unsigned long) (sourceP=0x7ff04d9956ac,
> > sourceStride=1, scalar=0x7ff02adfc640, destP=0x7ff04d9956ac, destStride=1,
> > framesToProcess=4) at ../../Source/WebCore/platform/audio/VectorMath.cpp:273
> > #1  0x00007ff0b6beee4c in
> > WebCore::AudioParamTimeline::processSetTarget(float*, unsigned int&,
> > unsigned int, float&, float, float) (this=0x7ff03325a2d0,
> > values=0x7ff04d995600, writeIndex=@0x7ff02adfc664: 43, fillToFrame=128,
> > value=@0x7ff02adfc640: 99, target=98.5, discreteTimeConstant=0.00226500467)
> > at ../../Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp:658
> > #2  0x00007ff0b6bee020 in
> > WebCore::AudioParamTimeline::valuesForTimeRangeImpl(unsigned long, unsigned
> > long, float, float*, unsigned int, double, double) (this=0x7ff03325a2d0,
> > startFrame=1280, endFrame=1408, defaultValue=100.472504,
> > values=0x7ff04d995600, numberOfValues=128, sampleRate=44100,
> > controlRate=44100) at
> > ../../Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp:523
> > #3  0x00007ff0b6bebad9 in
> > WebCore::AudioParamTimeline::valuesForTimeRange(unsigned long, unsigned
> > long, float, float, float, float*, unsigned int, double, double)
> > (this=0x7ff03325a2d0, startFrame=1280, endFrame=1408,
> > defaultValue=100.472504, minValue=-3.40282347e+38, maxValue=3.40282347e+38,
> > values=0x7ff04d995600, numberOfValues=128, sampleRate=44100,
> > controlRate=44100) at
> > ../../Source/WebCore/Modules/webaudio/AudioParamTimeline.cpp:338
> > #4  0x00007ff0b6beb9db in
> > WebCore::AudioParam::calculateTimelineValues(float*, unsigned int)
> > (this=0x7ff03325a260, values=0x7ff04d995600, numberOfValues=128) at
> > ../../Source/WebCore/Modules/webaudio/AudioParam.cpp:310
> > #5  0x00007ff0b6beb5e9 in WebCore::AudioParam::calculateFinalValues(float*,
> > unsigned int, bool) (this=0x7ff03325a260, values=0x7ff04d995600,
> > numberOfValues=128, sampleAccurate=true) at
> > ../../Source/WebCore/Modules/webaudio/AudioParam.cpp:254
> > #6  0x00007ff0b6be1dd5 in
> > WebCore::AudioParam::calculateSampleAccurateValues(float*, unsigned int)
> > (this=0x7ff03325a260, values=0x7ff04d995600, numberOfValues=128) at
> > ../../Source/WebCore/Modules/webaudio/AudioParam.cpp:240
> > #7  0x00007ff0b6c339b7 in WebCore::GainNode::process(unsigned long)
> > (this=0x7ff04dc50a80, framesToProcess=128) at
> > ../../Source/WebCore/Modules/webaudio/GainNode.cpp:90
> > #8  0x00007ff0b6be62fa in WebCore::AudioNode::processIfNecessary(unsigned
> > long) (this=0x7ff04dc50a80, framesToProcess=128) at
> > ../../Source/WebCore/Modules/webaudio/AudioNode.cpp:481
> > #9  0x00007ff0b6be8557 in WebCore::AudioNodeOutput::pull(WebCore::AudioBus*,
> > unsigned long) (this=0x7ff0303b2ea0, inPlaceBus=0x0, framesToProcess=128) at
> > ../../Source/WebCore/Modules/webaudio/AudioNodeOutput.cpp:123
> > #10 0x00007ff0b6be8386 in
> > WebCore::AudioNodeInput::sumAllConnections(WebCore::AudioBus*, unsigned
> > long) (this=0x7ff0303b2d00, summingBus=0x7ff04d98c000, framesToProcess=128)
> > at ../../Source/WebCore/Modules/webaudio/AudioNodeInput.cpp:206
> > #11 0x00007ff0b6be6967 in WebCore::AudioNodeInput::pull(WebCore::AudioBus*,
> > unsigned long) (this=0x7ff0303b2d00, inPlaceBus=0x7ff04d9445e8,
> > framesToProcess=128) at
> > ../../Source/WebCore/Modules/webaudio/AudioNodeInput.cpp:234
> > #12 0x00007ff0b6bb2f51 in
> > WebCore::AudioDestinationNode::render(WebCore::AudioBus*,
> > WebCore::AudioBus*, unsigned long, WebCore::AudioIOPosition const&)
> > (this=0x7ff04dc25e60, destinationBus=0x7ff04d9445e8, numberOfFrames=128,
> > outputPosition=...) at
> > ../../Source/WebCore/Modules/webaudio/AudioDestinationNode.cpp:85
> > #13 0x00007ff0b6c51c3a in
> > WebCore::OfflineAudioDestinationNode::offlineRender() (this=0x7ff04dc25e60)
> > at ../../Source/WebCore/Modules/webaudio/OfflineAudioDestinationNode.cpp:151
> > #14 0x00007ff0b6c5cfef in
> > WebCore::OfflineAudioDestinationNode::startRendering()::$_0::operator()()
> > const (this=0x7ff04d9f73f8) at
> > ../../Source/WebCore/Modules/webaudio/OfflineAudioDestinationNode.cpp:102
> > #15 0x00007ff0b6c5cfbe in
> > WTF::Detail::CallableWrapper<WebCore::OfflineAudioDestinationNode::
> > startRendering()::$_0, void>::call() (this=0x7ff04d9f73f0) at
> > DerivedSources/ForwardingHeaders/wtf/Function.h:52
> > #16 0x00007ff0b3eecf72 in WTF::Function<void ()>::operator()() const
> > (this=0x7ff02adfcc40) at DerivedSources/ForwardingHeaders/wtf/Function.h:83
> > #17 0x00007ff0a7a9d4f8 in
> > WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*)
> > (newThreadContext=0x7ff04dd18eb0) at ../../Source/WTF/wtf/Threading.cpp:179
> > #18 0x00007ff0a7b3a378 in WTF::wtfThreadEntryPoint(void*)
> > (context=0x7ff04dd18eb0) at ../../Source/WTF/wtf/posix/ThreadingPOSIX.cpp:213
> > #19 0x00007ff0a1d904d2 in start_thread (arg=<optimized out>) at
> > pthread_create.c:477
> > #20 0x00007ff09f9084d3 in clone () at
> > ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
> 
> Ok, taking a look now. Weird, I am pretty sure I tested the SSE version of
> vsadd() on my machine..

Ok, I can reproduce. Should make this easy to figure out.
Comment 12 Chris Dumez 2020-09-18 09:00:30 PDT
Reopening to attach new patch.
Comment 13 Chris Dumez 2020-09-18 09:00:31 PDT
Created attachment 409133 [details]
SSE implementation fix
Comment 14 EWS 2020-09-18 09:43:31 PDT
Committed r267240: <https://trac.webkit.org/changeset/267240>

All reviewed patches have been landed. Closing bug and clearing flags on attachment 409133 [details].