RESOLVED FIXED 216673
Vectorize SetTargetAtTime processing in AudioParamTimeline
https://bugs.webkit.org/show_bug.cgi?id=216673
Summary Vectorize SetTargetAtTime processing in AudioParamTimeline
Chris Dumez
Reported 2020-09-17 16:34:08 PDT
Vectorize SetTargetAtTime processing in AudioParamTimeline.
Attachments
Patch (38.28 KB, patch)
2020-09-17 16:45 PDT, Chris Dumez
no flags
Patch (38.29 KB, patch)
2020-09-17 16:55 PDT, Chris Dumez
no flags
Patch (41.13 KB, patch)
2020-09-17 17:40 PDT, Chris Dumez
no flags
SSE implementation fix (3.07 KB, patch)
2020-09-18 09:00 PDT, Chris Dumez
no flags
Chris Dumez
Comment 1 2020-09-17 16:45:23 PDT
Sam Weinig
Comment 2 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?
Chris Dumez
Comment 3 2020-09-17 16:55:49 PDT
Chris Dumez
Comment 4 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.
Chris Dumez
Comment 5 2020-09-17 17:40:18 PDT
EWS
Comment 6 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].
Radar WebKit Bug Importer
Comment 7 2020-09-17 18:34:17 PDT
Philippe Normand
Comment 8 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
Philippe Normand
Comment 9 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
Chris Dumez
Comment 10 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..
Chris Dumez
Comment 11 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.
Chris Dumez
Comment 12 2020-09-18 09:00:30 PDT
Reopening to attach new patch.
Chris Dumez
Comment 13 2020-09-18 09:00:31 PDT
Created attachment 409133 [details] SSE implementation fix
EWS
Comment 14 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].
Note You need to log in before you can comment on or make changes to this bug.