Bug 213699
| Summary: | [GStreamer] ⛱ MediaRecorder implementation | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Philippe Normand <pnormand> |
| Component: | Platform | Assignee: | Nobody <webkit-unassigned> |
| Status: | NEW | ||
| Severity: | Normal | CC: | aboya, dpino, fujii.hironori, lmoura |
| Priority: | P2 | ||
| Version: | WebKit Nightly Build | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| See Also: |
https://bugs.webkit.org/show_bug.cgi?id=238774 https://bugs.webkit.org/show_bug.cgi?id=295985 |
||
| Bug Depends on: | 236558 | ||
| Bug Blocks: | 296928 | ||
Philippe Normand
Implement Source/WebCore/platform/mediarecorder/MediaRecorderPrivate.h for GTK/WPE.
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Philippe Normand
Demo: https://addpipe.com/media-recorder-api-demo/
Layout tests:
# MediaRecorder is not currently implemented
http/wpt/mediarecorder [ Skip ]
imported/w3c/web-platform-tests/mediacapture-record [ Skip ]
Philippe Normand
After landing the basic backend, the remaining failures are:
webkit.org/b/213699 http/wpt/mediarecorder/mimeType.html [ Failure ]
webkit.org/b/213699 http/wpt/mediarecorder/mute-tracks.html [ Failure ]
webkit.org/b/213699 http/wpt/mediarecorder/video-rotation.html [ Failure ]
webkit.org/b/213699 imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-mimetype.html [ Timeout ]
webkit.org/b/213699 imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-no-sink.https.html [ Failure ]
webkit.org/b/213699 imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-peerconnection.https.html [ Failure ]
webkit.org/b/213699 http/wpt/mediarecorder/set-srcObject-MediaStream-Blob.html [ Pass Failure ]
# Our WebRTC encoder doesn't support high h.264 profile yet.
webkit.org/b/213699 http/wpt/mediarecorder/MediaRecorder-video-h264-profiles.html [ Failure ]
# https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1017
webkit.org/b/213699 imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-bitrate.https.html [ Pass Crash ]
Diego Pino
http/wpt/mediarecorder/mute-tracks.html is now a flaky crash (but crashing most of the times):
https://results.webkit.org/?suite=layout-tests&test=http%2Fwpt%2Fmediarecorder%2Fmute-tracks.html&platform=GTK&platform=WPE&platform=mac&platform=win
The test is a flaky crash in other platforms too.
The test is also crashing in WPE Debug but the bot is not generating a stack trace, only stderr.
https://build.webkit.org/results/WPE-Linux-64-bit-Debug-Tests/259642@main%20(4377)/http/wpt/mediarecorder/mute-tracks-crash-log.txt
```
STDERR:
STDERR: (WPEWebProcess:175549): GStreamer-Video-CRITICAL **: 19:31:04.279: gst_video_converter_new_with_pool: assertion 'in_info->fps_n == out_info->fps_n' failed
STDERR: WPEWebProcess terminated (pid 175549) for reason: crash
STDERR: LEAK: 44 WebPageProxy
```
Stack trace from WPE Release:
```
Thread 1 (Thread 0x7f71097fa640 (LWP 29642)):
#0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
#1 0x00007f71abcb91f3 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
#2 0x00007f71abc6700e in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3 0x00007f71abc507fc in __GI_abort () at abort.c:79
#4 0x00007f71ac3e0b43 in g_assertion_message (domain=<optimized out>, file=0x7f7128197738 "../gst/videorate/gstvideorate.c", line=<optimized out>, func=<optimized out>, message=<optimized out>) at ../glib/gtestutils.c:3253
#5 0x00007f71ac43c1a7 in g_assertion_message_expr (domain=domain@entry=0x0, file=file@entry=0x7f7128197738 "../gst/videorate/gstvideorate.c", line=line@entry=741, func=func@entry=0x7f7128198330 <__func__.6> "gst_video_rate_push_buffer", expr=expr@entry=0x7f71281979d8 "GST_BUFFER_DURATION (outbuf) != 0") at ../glib/gtestutils.c:3
#6 0x00007f7128192838 in gst_video_rate_push_buffer (videorate=videorate@entry=0x55751e5648f0 [GstVideoRate|videorate15], outbuf=0x7f6fc4015ea0 [None], duplicate=duplicate@entry=0, next_intime=next_intime@entry=97242462 [0:00:00.097242462], invalid_duration=invalid_duration@entry=0) at ../gst/videorate/gstvideorate.c:741
#7 0x00007f7128192a80 in gst_video_rate_flush_prev (videorate=videorate@entry=0x55751e5648f0 [GstVideoRate|videorate15], duplicate=duplicate@entry=0, next_intime=next_intime@entry=97242462 [0:00:00.097242462], invalid_duration=invalid_duration@entry=0) at ../gst/videorate/gstvideorate.c:777
#8 0x00007f7128194804 in gst_video_rate_transform_ip (trans=<optimized out>, buffer=0x7f6fb0051b40 [None]) at ../gst/videorate/gstvideorate.c:1902
#9 0x00007f71a922e31a in default_generate_output (trans=0x55751e5648f0 [GstBaseTransform|videorate15], outbuf=0x7f71097f9130) at ../libs/gst/base/gstbasetransform.c:2197
#10 0x00007f71a923c246 in gst_base_transform_chain (pad=<optimized out>, parent=0x55751e5648f0 [GstObject|videorate15], buffer=<optimized out>) at ../libs/gst/base/gstbasetransform.c:2355
#11 0x00007f71ac212775 in gst_pad_chain_data_unchecked (pad=pad@entry=0x55751e417870 [GstPad|sink], type=type@entry=4112, data=data@entry=0x7f6fb0051b40) at ../gst/gstpad.c:4463
#12 0x00007f71ac216114 in gst_pad_push_data (pad=pad@entry=0x55751e416f30 [GstPad|src], type=type@entry=4112, data=data@entry=0x7f6fb0051b40) at ../gst/gstpad.c:4739
#13 0x00007f71ac2164de in gst_pad_push (pad=0x55751e416f30 [GstPad|src], buffer=0x7f6fb0051b40 [None]) at ../gst/gstpad.c:4858
#14 0x00007f71a923c31b in gst_base_transform_chain (pad=<optimized out>, parent=0x55751e568100 [GstObject|videoconvert47], buffer=<optimized out>) at ../libs/gst/base/gstbasetransform.c:2391
#15 0x00007f71ac212775 in gst_pad_chain_data_unchecked (pad=pad@entry=0x55751e3c5900 [GstPad|sink], type=type@entry=4112, data=data@entry=0x7f6fb0051b40) at ../gst/gstpad.c:4463
#16 0x00007f71ac216114 in gst_pad_push_data (pad=pad@entry=0x55751e3c56b0 [GstPad|src], type=type@entry=4112, data=data@entry=0x7f6fb0051b40) at ../gst/gstpad.c:4739
#17 0x00007f71ac2164de in gst_pad_push (pad=0x55751e3c56b0 [GstPad|src], buffer=0x7f6fb0051b40 [None]) at ../gst/gstpad.c:4858
#18 0x00007f71a923c31b in gst_base_transform_chain (pad=<optimized out>, parent=0x55751e567c20 [GstObject|videoscale31], buffer=<optimized out>) at ../libs/gst/base/gstbasetransform.c:2391
#19 0x00007f71ac212775 in gst_pad_chain_data_unchecked (pad=pad@entry=0x55751e3c5da0 [GstPad|sink], type=type@entry=4112, data=data@entry=0x7f6fb0051b40) at ../gst/gstpad.c:4463
#20 0x00007f71ac216114 in gst_pad_push_data (pad=pad@entry=0x55751e3c5b50 [GstPad|src], type=type@entry=4112, data=data@entry=0x7f6fb0051b40) at ../gst/gstpad.c:4739
#21 0x00007f71ac2164de in gst_pad_push (pad=0x55751e3c5b50 [GstPad|src], buffer=0x7f6fb0051b40 [None]) at ../gst/gstpad.c:4858
#22 0x00007f71a923c31b in gst_base_transform_chain (pad=<optimized out>, parent=0x55751e564480 [GstObject|videoconvert46], buffer=<optimized out>) at ../libs/gst/base/gstbasetransform.c:2391
#23 0x00007f71ac212775 in gst_pad_chain_data_unchecked (pad=pad@entry=0x55751e3c4b20 [GstPad|sink], type=type@entry=4112, data=data@entry=0x7f6fc40117e0) at ../gst/gstpad.c:4463
#24 0x00007f71ac216114 in gst_pad_push_data (pad=pad@entry=0x55751e3f49a0 [GstPad|encodingsrc], type=type@entry=4112, data=data@entry=0x7f6fc40117e0) at ../gst/gstpad.c:4739
#25 0x00007f71ac2164de in gst_pad_push (pad=pad@entry=0x55751e3f49a0 [GstPad|encodingsrc], buffer=buffer@entry=0x7f6fc40117e0 [None]) at ../gst/gstpad.c:4858
#26 0x00007f713c01b995 in gst_stream_splitter_chain (pad=<optimized out>, parent=0x55751e658550 [GstObject|streamsplitter32], buf=0x7f6fc40117e0 [None]) at ../gst/encoding/gststreamsplitter.c:141
#27 0x00007f71ac212775 in gst_pad_chain_data_unchecked (pad=pad@entry=0x55751e2f28d0 [GstPad|sink], type=type@entry=4112, data=data@entry=0x7f6fc40117e0) at ../gst/gstpad.c:4463
#28 0x00007f71ac216114 in gst_pad_push_data (pad=pad@entry=0x55751e3cf760 [GstPad|src], type=type@entry=4112, data=data@entry=0x7f6fc40117e0) at ../gst/gstpad.c:4739
#29 0x00007f71ac2164de in gst_pad_push (pad=0x55751e3cf760 [GstPad|src], buffer=buffer@entry=0x7f6fc40117e0 [None]) at ../gst/gstpad.c:4858
#30 0x00007f71480985ec in gst_queue_push_one (queue=0x55751e343b00 [GstQueue|queue68]) at ../plugins/elements/gstqueue.c:1388
#31 gst_queue_loop (pad=<optimized out>) at ../plugins/elements/gstqueue.c:1541
#32 0x00007f71ac23ed41 in gst_task_func (task=0x7f6fc400c5f0 [GstTask|queue68:src]) at ../gst/gsttask.c:384
#33 0x00007f71ac44b692 in g_thread_pool_thread_proxy (data=<optimized out>) at ../glib/gthreadpool.c:350
#34 0x00007f71ac448722 in g_thread_proxy (data=0x7f6f80001de0) at ../glib/gthread.c:827
#35 0x00007f71abcb71da in start_thread (arg=<optimized out>) at pthread_create.c:442
#36 0x00007f71abd3ff44 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:100
```
Fujii Hironori
http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable.html is still randomly crashing.
https://build.webkit.org/results/WPE-Linux-64-bit-Debug-Tests/304895@main%20(13546)/http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable-crash-log.txt
Thread 1 (Thread 0x7fb8419fc6c0 (LWP 2241657)):
#0 sk_collection_check_bounds<int> (i=3, size=3) at ../../../Source/ThirdParty/skia/include/private/base/SkAssert.h:152
#1 0x00007fb8cb82b79f in SkTDArray<GrGpuResource*>::operator[] (this=0x562df937d598, index=3) at ../../../Source/ThirdParty/skia/include/private/base/SkTDArray.h:156
#2 0x00007fb8cb82c286 in SkTDPQueue<GrGpuResource*, &GrResourceCache::CompareTimestamp, &GrResourceCache::AccessResourceIndex>::setIndex (this=0x562df937d598, index=3) at ../../../Source/ThirdParty/skia/src/base/SkTDPQueue.h:203
#3 0x00007fb8cb82c641 in SkTDPQueue<GrGpuResource*, &GrResourceCache::CompareTimestamp, &GrResourceCache::AccessResourceIndex>::percolateUpIfNecessary (this=0x562df937d598, index=3) at ../../../Source/ThirdParty/skia/src/base/SkTDPQueue.h:153
#4 0x00007fb8cb82b4a2 in SkTDPQueue<GrGpuResource*, &GrResourceCache::CompareTimestamp, &GrResourceCache::AccessResourceIndex>::insert (this=0x562df937d598, entry=0x562dfbbaa730) at ../../../Source/ThirdParty/skia/src/base/SkTDPQueue.h:74
#5 0x00007fb8cb829b28 in GrResourceCache::notifyARefCntReachedZero (this=0x562df937d580, resource=0x562dfbbaa730, removedRef=GrIORef<GrGpuResource>::LastRemovedRef::kMainRef) at ../../../Source/ThirdParty/skia/src/gpu/ganesh/GrResourceCache.cpp:350
#6 0x00007fb8cb802c28 in GrResourceCache::ResourceAccess::notifyARefCntReachedZero (this=0x7fb8419faee8, resource=0x562dfbbaa730, removedRef=GrIORef<GrGpuResource>::LastRemovedRef::kMainRef) at ../../../Source/ThirdParty/skia/src/gpu/ganesh/GrResourceCache.h:449
#7 0x00007fb8cb80387a in GrGpuResource::notifyARefCntIsZero (this=0x562dfbbaa730, removedRef=GrIORef<GrGpuResource>::LastRemovedRef::kMainRef) at ../../../Source/ThirdParty/skia/src/gpu/ganesh/GrGpuResource.cpp:180
#8 0x00007fb8cb796308 in GrIORef<GrGpuResource>::notifyWillBeZero (this=0x562dfbbaa738, removedRef=GrIORef<GrGpuResource>::LastRemovedRef::kMainRef) at ../../../Source/ThirdParty/skia/src/gpu/ganesh/GrGpuResource.h:102
#9 0x00007fb8cb7947fa in GrIORef<GrGpuResource>::unref (this=0x562dfbbaa738) at ../../../Source/ThirdParty/skia/src/gpu/ganesh/GrGpuResource.h:65
#10 0x00007fb8cb825404 in SkSafeUnref<GrSurface> (obj=0x562dfbbaa730) at ../../../Source/ThirdParty/skia/include/core/SkRefCnt.h:151
#11 0x00007fb8cb8256a6 in sk_sp<GrSurface>::reset (this=0x562dfbb50a50, ptr=0x0) at ../../../Source/ThirdParty/skia/include/core/SkRefCnt.h:316
#12 0x00007fb8cb83bed3 in sk_sp<GrSurface>::operator=(decltype(nullptr)) (this=0x562dfbb50a50) at ../../../Source/ThirdParty/skia/include/core/SkRefCnt.h:260
#13 0x00007fb8cb83d942 in GrTextureProxy::~GrTextureProxy (this=0x562dfbb509e0, __vtt_parm=0x7fb8ccb84048 <VTT for GrTextureRenderTargetProxy+24>, __in_chrg=<optimized out>) at ../../../Source/ThirdParty/skia/src/gpu/ganesh/GrTextureProxy.cpp:110
#14 0x00007fb8cb83f5bf in GrTextureRenderTargetProxy::~GrTextureRenderTargetProxy (this=0x562dfbb509b0, __in_chrg=<optimized out>, __vtt_parm=<optimized out>) at ../../../Source/ThirdParty/skia/src/gpu/ganesh/GrTextureRenderTargetProxy.h:44
#15 0x00007fb8cb83f624 in GrTextureRenderTargetProxy::~GrTextureRenderTargetProxy (this=0x562dfbb509b0, __in_chrg=<optimized out>, __vtt_parm=<optimized out>) at ../../../Source/ThirdParty/skia/src/gpu/ganesh/GrTextureRenderTargetProxy.h:44
#16 0x00007fb8cb797de7 in SkNVRefCnt<GrSurfaceProxy>::unref (this=0x562dfbb50a48) at ../../../Source/ThirdParty/skia/include/core/SkRefCnt.h:181
#17 0x00007fb8cb7962bb in SkSafeUnref<GrSurfaceProxy> (obj=0x562dfbb50a40) at ../../../Source/ThirdParty/skia/include/core/SkRefCnt.h:151
#18 0x00007fb8cb794775 in sk_sp<GrSurfaceProxy>::~sk_sp (this=0x562dfbaae390, __in_chrg=<optimized out>) at ../../../Source/ThirdParty/skia/include/core/SkRefCnt.h:256
#19 0x00007fb8cb923460 in SkImage_Ganesh::ProxyChooser::~ProxyChooser (this=0x562dfbaae388, __in_chrg=<optimized out>) at ../../../Source/ThirdParty/skia/src/gpu/ganesh/image/SkImage_Ganesh.cpp:76
#20 0x00007fb8cb92417e in SkImage_Ganesh::~SkImage_Ganesh (this=0x562dfbaae350, __in_chrg=<optimized out>) at ../../../Source/ThirdParty/skia/src/gpu/ganesh/image/SkImage_Ganesh.cpp:244
#21 0x00007fb8cb9241aa in SkImage_Ganesh::~SkImage_Ganesh (this=0x562dfbaae350, __in_chrg=<optimized out>) at ../../../Source/ThirdParty/skia/src/gpu/ganesh/image/SkImage_Ganesh.cpp:244
#22 0x00007fb8cb49520a in SkRefCntBase::internal_dispose (this=0x562dfbaae350) at ../../../Source/ThirdParty/skia/include/core/SkRefCnt.h:99
#23 0x00007fb8bd9aa734 in SkRefCntBase::unref (this=0x562dfbaae350) at ../../../Source/ThirdParty/skia/include/core/SkRefCnt.h:78
#24 0x00007fb8bd9aa981 in SkSafeUnref<SkImage> (obj=0x562dfbaae350) at ../../../Source/ThirdParty/skia/include/core/SkRefCnt.h:151
#25 0x00007fb8bd9aa84b in sk_sp<SkImage>::~sk_sp (this=0x7fb89c110698, __in_chrg=<optimized out>) at ../../../Source/ThirdParty/skia/include/core/SkRefCnt.h:256
#26 0x00007fb8c993be95 in WebCore::NativeImage::~NativeImage (this=0x7fb89c110680, __in_chrg=<optimized out>) at ../../../Source/WebCore/platform/graphics/NativeImage.cpp:63
#27 0x00007fb8c993b5a7 in WebCore::NativeImage::operator delete (object=0x7fb89c110680, size=80) at WebCore/PrivateHeaders/WebCore/NativeImage.h:50
#28 0x00007fb8c993bef3 in WebCore::NativeImage::~NativeImage (this=0x7fb89c110680, __in_chrg=<optimized out>) at ../../../Source/WebCore/platform/graphics/NativeImage.cpp:63
#29 0x00007fb8bd9aabf1 in WTF::ThreadSafeRefCounted<WebCore::NativeImage, (WTF::DestructionThread)0>::deref (this=0x7fb89c110688) at WTF/Headers/wtf/ThreadSafeRefCounted.h:99
#30 0x00007fb8bd9aaa84 in WTF::DefaultRefDerefTraits<WebCore::NativeImage>::derefIfNotNull (ptr=0x7fb89c110680) at WTF/Headers/wtf/Ref.h:64
#31 0x00007fb8be714f97 in WTF::Ref<WebCore::NativeImage, WTF::RawPtrTraits<WebCore::NativeImage>, WTF::DefaultRefDerefTraits<WebCore::NativeImage> >::~Ref (this=0x7fb89c5e4568, __in_chrg=<optimized out>) at WTF/Headers/wtf/Ref.h:85
#32 0x00007fb8c374efe0 in WebCore::CoordinatedPlatformLayerBufferNativeImage::~CoordinatedPlatformLayerBufferNativeImage (this=0x7fb89c5e4540, __in_chrg=<optimized out>) at ../../../Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayerBufferNativeImage.cpp:91
#33 0x00007fb8c374f00c in WebCore::CoordinatedPlatformLayerBufferNativeImage::~CoordinatedPlatformLayerBufferNativeImage (this=0x7fb89c5e4540, __in_chrg=<optimized out>) at ../../../Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayerBufferNativeImage.cpp:91
#34 0x00007fb8bff9a8bc in std::default_delete<WebCore::CoordinatedPlatformLayerBuffer>::operator() (this=0x7fb89c431620, __ptr=0x7fb89c5e4540) at /usr/include/c++/13/bits/unique_ptr.h:99
#35 0x00007fb8c374b31a in std::__uniq_ptr_impl<WebCore::CoordinatedPlatformLayerBuffer, std::default_delete<WebCore::CoordinatedPlatformLayerBuffer> >::reset (this=0x7fb89c431620, __p=0x7fb89c5e4740) at /usr/include/c++/13/bits/unique_ptr.h:211
#36 0x00007fb8c374a184 in std::__uniq_ptr_impl<WebCore::CoordinatedPlatformLayerBuffer, std::default_delete<WebCore::CoordinatedPlatformLayerBuffer> >::operator= (this=0x7fb89c431620, __u=...) at /usr/include/c++/13/bits/unique_ptr.h:191
#37 0x00007fb8c37456bd in std::__uniq_ptr_data<WebCore::CoordinatedPlatformLayerBuffer, std::default_delete<WebCore::CoordinatedPlatformLayerBuffer>, true, true>::operator= (this=0x7fb89c431620) at /usr/include/c++/13/bits/unique_ptr.h:243
#38 0x00007fb8c37456eb in std::unique_ptr<WebCore::CoordinatedPlatformLayerBuffer, std::default_delete<WebCore::CoordinatedPlatformLayerBuffer> >::operator= (this=0x7fb89c431620) at /usr/include/c++/13/bits/unique_ptr.h:414
#39 0x00007fb8c3749674 in WebCore::CoordinatedPlatformLayer::flushCompositingState (this=0x7fb89c4313d0, reasons=..., textureMapper=...) at ../../../Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedPlatformLayer.cpp:1082
#40 0x00007fb8c06225eb in WebKit::ThreadedCompositor::flushCompositingState (this=0x7fb89c0a04a0, reasons=...) at ../../../Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/ThreadedCompositor.cpp:258
#41 0x00007fb8c06237dd in WebKit::ThreadedCompositor::renderLayerTree (this=0x7fb89c0a04a0) at ../../../Source/WebKit/WebProcess/WebPage/CoordinatedGraphics/ThreadedCompositor.cpp:399
#42 0x00007fb8c0629d03 in WTF::RunLoop::Timer::Timer<WebKit::ThreadedCompositor>(WTF::Ref<WTF::RunLoop, WTF::RawPtrTraits<WTF::RunLoop>, WTF::DefaultRefDerefTraits<WTF::RunLoop> >&&, WTF::ASCIILiteral, WebKit::ThreadedCompositor*, void (WebKit::ThreadedCompositor::*)())::{lambda()#1}::operator()() const (__closure=0x7fb89c0d65b8) at WTF/Headers/wtf/RunLoop.h:210
#43 0x00007fb8c064382e in WTF::Detail::CallableWrapper<WTF::RunLoop::Timer::Timer<WebKit::ThreadedCompositor>(WTF::Ref<WTF::RunLoop, WTF::RawPtrTraits<WTF::RunLoop>, WTF::DefaultRefDerefTraits<WTF::RunLoop> >&&, WTF::ASCIILiteral, WebKit::ThreadedCompositor*, void (WebKit::ThreadedCompositor::*)())::{lambda()#1}, void>::call() (this=0x7fb89c0d65b0) at WTF/Headers/wtf/Function.h:59
#44 0x00007fb8bd94a2ed in WTF::Function<void ()>::operator()() const (this=0x7fb89c0a0550) at WTF/Headers/wtf/Function.h:103
#45 0x00007fb8bd948f00 in WTF::RunLoop::Timer::fired (this=0x7fb89c0a0518) at WTF/Headers/wtf/RunLoop.h:262
#46 0x00007fb8c33a3c8b in operator() (__closure=0x0, userData=0x7fb89c0a0518) at ../../../Source/WTF/wtf/glib/RunLoopGLib.cpp:327
#47 0x00007fb8c33a3ccf in _FUN () at ../../../Source/WTF/wtf/glib/RunLoopGLib.cpp:331
#48 0x00007fb8c33a2854 in operator() (__closure=0x0, source=0x562df956cac0, callback=0x7fb8c33a3cae <_FUN(gpointer)>, userData=0x7fb89c0a0518) at ../../../Source/WTF/wtf/glib/RunLoopGLib.cpp:115
#49 0x00007fb8c33a28c1 in _FUN () at ../../../Source/WTF/wtf/glib/RunLoopGLib.cpp:118
#50 0x00007fb8ace7c49e in ??? () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#51 0x00007fb8ace7c710 in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#52 0x00007fb8c33a3245 in WTF::RunLoop::runGLibMainLoopIteration (this=0x7fb89c108110, mayBlock=WTF::RunLoop::MayBlock::Yes) at ../../../Source/WTF/wtf/glib/RunLoopGLib.cpp:190
#53 0x00007fb8c33a32b4 in WTF::RunLoop::runGLibMainLoop (this=0x7fb89c108110) at ../../../Source/WTF/wtf/glib/RunLoopGLib.cpp:199
#54 0x00007fb8c33a337c in WTF::RunLoop::run () at ../../../Source/WTF/wtf/glib/RunLoopGLib.cpp:212
#55 0x00007fb8c31ba42a in operator() (__closure=0x7fb89c0fad88) at ../../../Source/WTF/wtf/RunLoop.cpp:111
#56 0x00007fb8c31be5b2 in WTF::Detail::CallableWrapper<WTF::RunLoop::create(WTF::ASCIILiteral, WTF::ThreadType, WTF::Thread::QOS)::<lambda()>, void>::call(void) (this=0x7fb89c0fad80) at ../../../Source/WTF/wtf/Function.h:59
#57 0x00007fb8bd94a2ed in WTF::Function<void ()>::operator()() const (this=0x7fb8419fbb38) at WTF/Headers/wtf/Function.h:103
#58 0x00007fb8c32d6b9f in WTF::Thread::entryPoint (newThreadContext=0x7fb89c0388a0) at ../../../Source/WTF/wtf/Threading.cpp:260
#59 0x00007fb8c33baf95 in WTF::wtfThreadEntryPoint (context=0x7fb89c0388a0) at ../../../Source/WTF/wtf/posix/ThreadingPOSIX.cpp:245
#60 0x00007fb8ade8aaa4 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:447
#61 0x00007fb8adf17c6c in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
Alicia Boya García
http/wpt/mediarecorder/video-rotation.html is flaky, but FWIW that is the case in macOS and iOS according to expectations, so it could also be a cross-platform issue:
--- /sdk/webkit/layout-test-results/http/wpt/mediarecorder/video-rotation-expected.txt
+++ /sdk/webkit/layout-test-results/http/wpt/mediarecorder/video-rotation-actual.txt
@@ -1,4 +1,4 @@
-PASS Record a rotated video
+FAIL Record a rotated video assert_equals: recorded video width expected 480 but got 640
platform/ios/TestExpectations
6581:http/wpt/mediarecorder/video-rotation.html [ Pass Failure ]
platform/mac-wk2/TestExpectations
379:http/wpt/mediarecorder/video-rotation.html [ Pass Failure Timeout ]