Bug 193230 - Define page media state flags for display capture.
Summary: Define page media state flags for display capture.
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebRTC (show other bugs)
Version: WebKit Local Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Eric Carlson
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2019-01-07 22:20 PST by Eric Carlson
Modified: 2019-01-14 11:14 PST (History)
6 users (show)

See Also:


Attachments
Patch (18.82 KB, patch)
2019-01-07 22:55 PST, Eric Carlson
no flags Details | Formatted Diff | Diff
Patch for landing (24.14 KB, patch)
2019-01-10 11:08 PST, Eric Carlson
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Eric Carlson 2019-01-07 22:20:49 PST
MediaProducer::MediaState, _WKMediaCaptureState, and WKMediaState only have a audio and video capture. Add flags for display capture.
Comment 1 Eric Carlson 2019-01-07 22:21:08 PST
<rdar://problem/47095142>
Comment 2 Eric Carlson 2019-01-07 22:55:06 PST
Created attachment 358577 [details]
Patch
Comment 3 EWS Watchlist 2019-01-07 22:57:49 PST
Attachment 358577 [details] did not pass style-queue:


ERROR: Source/WebCore/platform/mediastream/RealtimeMediaSource.h:164:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
Total errors found: 1 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 4 youenn fablet 2019-01-08 08:52:31 PST
Comment on attachment 358577 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=358577&action=review

> Source/WebCore/platform/mediastream/RealtimeMediaSource.h:164
> +    virtual CaptureDevice::DeviceType deviceType() const { return CaptureDevice::DeviceType::Unknown; }

Make it virtual pure might be better, that would ensure that every subclass implements it.

> Source/WebCore/platform/mediastream/mac/WindowDisplayCaptureSourceMac.h:54
> +    CaptureDevice::DeviceType deviceType() const final { return CaptureDevice::DeviceType::Window; }

DeviceType also has Application and Browser in addition to Window.
I wonder whether we should not remove these 3 types and use Screen for all of them.

One reason is that 'ScreenCaptureMask' refers to screen + the three other types.
If we need to surface that information in some way, we could surface it outside of deviceType.

Or maybe ScreenCaptureMask, HasInterruptedScreenCaptureDevice et al should be renamed to DisplayCaptureMask.

> Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp:60
>          : RealtimeMediaSource(type, WTFMove(name), WTFMove(sourceID), WTFMove(hashSalt))

We could compute type based on deviceType.

> Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp:63
> +        , m_deviceType(deviceType)

Should we assert that deviceType != Unknown.

> LayoutTests/fast/mediastream/get-display-media-muted.html:40
> +        return new Promise((resolve, reject) => {

await would work too

> LayoutTests/fast/mediastream/get-display-media-muted.html:43
> +                new Promise((innerResolve, innerReject) => {

This could be rewritten to something like:

track.onmute = () => assert_not_reached(...)
await new Promise((resolve) => { track.onmute = resolve; });
await waitForPageStateChange(10, internals.pageMediaState();
// with waitForPageStateChange as an async function

> LayoutTests/fast/mediastream/get-display-media-muted.html:66
> +

Double line.
Comment 5 Eric Carlson 2019-01-10 11:08:25 PST
Created attachment 358809 [details]
Patch for landing
Comment 6 Eric Carlson 2019-01-10 11:09:49 PST
Comment on attachment 358577 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=358577&action=review

>> Source/WebCore/platform/mediastream/RealtimeMediaSource.h:164
>> +    virtual CaptureDevice::DeviceType deviceType() const { return CaptureDevice::DeviceType::Unknown; }
> 
> Make it virtual pure might be better, that would ensure that every subclass implements it.

I did that at first, but realized that this method really only make sense for capture sources. For example, what "device type" should a canvas capture source return?

>> Source/WebCore/platform/mediastream/mac/WindowDisplayCaptureSourceMac.h:54
>> +    CaptureDevice::DeviceType deviceType() const final { return CaptureDevice::DeviceType::Window; }
> 
> DeviceType also has Application and Browser in addition to Window.
> I wonder whether we should not remove these 3 types and use Screen for all of them.
> 
> One reason is that 'ScreenCaptureMask' refers to screen + the three other types.
> If we need to surface that information in some way, we could surface it outside of deviceType.
> 
> Or maybe ScreenCaptureMask, HasInterruptedScreenCaptureDevice et al should be renamed to DisplayCaptureMask.

I removed Application and Browser. We need Window to differentiate screen and window captured "devices". I changed the enum names from XXXScreenCaptureXXX to XXXDisplayCaptureXXX.

>> Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp:60
>>          : RealtimeMediaSource(type, WTFMove(name), WTFMove(sourceID), WTFMove(hashSalt))
> 
> We could compute type based on deviceType.

That makes the call to the base class constructor so long it wraps and is difficult to read, so I left it as is.

>> Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp:63
>> +        , m_deviceType(deviceType)
> 
> Should we assert that deviceType != Unknown.

Fixed.

>> LayoutTests/fast/mediastream/get-display-media-muted.html:40
>> +        return new Promise((resolve, reject) => {
> 
> await would work too

Fixed.

>> LayoutTests/fast/mediastream/get-display-media-muted.html:43
>> +                new Promise((innerResolve, innerReject) => {
> 
> This could be rewritten to something like:
> 
> track.onmute = () => assert_not_reached(...)
> await new Promise((resolve) => { track.onmute = resolve; });
> await waitForPageStateChange(10, internals.pageMediaState();
> // with waitForPageStateChange as an async function

Fixed.

>> LayoutTests/fast/mediastream/get-display-media-muted.html:66
>> +
> 
> Double line.

Removed.
Comment 7 EWS Watchlist 2019-01-10 11:10:52 PST
Attachment 358809 [details] did not pass style-queue:


ERROR: Source/WebCore/platform/mediastream/RealtimeMediaSource.h:164:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
Total errors found: 1 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 8 WebKit Commit Bot 2019-01-10 12:48:57 PST
Comment on attachment 358809 [details]
Patch for landing

Clearing flags on attachment: 358809

Committed r239840: <https://trac.webkit.org/changeset/239840>
Comment 9 WebKit Commit Bot 2019-01-10 12:48:58 PST
All reviewed patches have been landed.  Closing bug.
Comment 10 Truitt Savell 2019-01-11 09:24:22 PST
It looks like https://trac.webkit.org/changeset/239840/webkit

has caused http/tests/media/media-stream/device-change-event-in-iframe.html
to become a flakey crash on Mac Debug WK2. 

Reproduced with:
run-webkit-tests --root debug-239840 http/tests/media/media-stream/get-user-media-localhost.html --iterations 50 -f --debug

I ran this on r239840 with %100 crash rate on Mojave, on r239839 there are no crashes.
Comment 11 Thibault Saunier 2019-01-14 06:01:38 PST
This introduced a regression where an assertion happens any time we want to use MediaStream on the GStreamer based ports:


STDERR: ASSERTION FAILED: deviceType == CaptureDevice::DeviceType::Camera || deviceType == CaptureDevice::DeviceType::Screen || deviceType == CaptureDevice::DeviceType::Window
STDERR: ../../Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp(404) : virtual WebCore::MediaProducer::MediaStateFlags WebCore::MediaStreamTrack::mediaState() const
STDERR: 1   0x7f4f237927f9 /app/webkit/WebKitBuild/Debug/lib/libjavascriptcoregtk-4.0.so.18(WTFCrash+0x9) [0x7f4f237927f9]
STDERR: 2   0x7f4f2f900da9 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::MediaStreamTrack::mediaState() const+0x3db) [0x7f4f2f900da9]
STDERR: 3   0x7f4f2fec8bd8 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::Document::updateIsPlayingMedia(unsigned long)+0x9e) [0x7f4f2fec8bd8]
STDERR: 4   0x7f4f2fec8a9f /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::Document::addAudioProducer(WebCore::MediaProducer*)+0x4b) [0x7f4f2fec8a9f]
STDERR: 5   0x7f4f2f8fefc8 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::MediaStreamTrack::MediaStreamTrack(WebCore::ScriptExecutionContext&, WTF::Ref<WebCore::MediaStreamTrackPrivate, WTF::DumbPtrTraits<WebCore::MediaStreamTrackPrivate> >&&)+0x1b8) [0x7f4f2f8fefc8]
STDERR: 6   0x7f4f2f8fedf3 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::MediaStreamTrack::create(WebCore::ScriptExecutionContext&, WTF::Ref<WebCore::MediaStreamTrackPrivate, WTF::DumbPtrTraits<WebCore::MediaStreamTrackPrivate> >&&)+0x45) [0x7f4f2f8fedf3]
STDERR: 7   0x7f4f2f8fcfb4 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::MediaStream::MediaStream(WebCore::ScriptExecutionContext&, WTF::Ref<WebCore::MediaStreamPrivate, WTF::DumbPtrTraits<WebCore::MediaStreamPrivate> >&&)+0x3b8) [0x7f4f2f8fcfb4]
STDERR: 8   0x7f4f2f8fc78d /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::MediaStream::create(WebCore::ScriptExecutionContext&, WTF::Ref<WebCore::MediaStreamPrivate, WTF::DumbPtrTraits<WebCore::MediaStreamPrivate> >&&)+0x45) [0x7f4f2f8fc78d]
STDERR: 9   0x7f4f2f9320a0 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(+0xa90e0a0) [0x7f4f2f9320a0]
STDERR: 10  0x7f4f2f935866 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(+0xa911866) [0x7f4f2f935866]
STDERR: 11  0x7f4f309f0b62 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WTF::Function<void (WTF::RefPtr<WebCore::MediaStreamPrivate, WTF::DumbPtrTraits<WebCore::MediaStreamPrivate> >&&)>::operator()(WTF::RefPtr<WebCore::MediaStreamPrivate, WTF::DumbPtrTraits<WebCore::MediaStreamPrivate> >&&) const+0x78) [0x7f4f309f0b62]
STDERR: 12  0x7f4f309e5591 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RealtimeMediaSourceCenter::createMediaStream(WTF::Function<void (WTF::RefPtr<WebCore::MediaStreamPrivate, WTF::DumbPtrTraits<WebCore::MediaStreamPrivate> >&&)>&&, WTF::String&&, WebCore::CaptureDevice&&, WebCore::CaptureDevice&&, WebCore::MediaStreamRequest const&)+0x4e9) [0x7f4f309e5591]
STDERR: 13  0x7f4f2f932302 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::UserMediaRequest::allow(WebCore::CaptureDevice&&, WebCore::CaptureDevice&&, WTF::String&&)+0xdc) [0x7f4f2f932302]
STDERR: 14  0x7f4f2ea5f0d7 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebKit::UserMediaPermissionRequestManager::userMediaAccessWasGranted(unsigned long, WebCore::CaptureDevice&&, WebCore::CaptureDevice&&, WTF::String&&)+0xbb) [0x7f4f2ea5f0d7]
STDERR: 15  0x7f4f2ebd016e /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebKit::WebPage::userMediaAccessWasGranted(unsigned long, WebCore::CaptureDevice&&, WebCore::CaptureDevice&&, WTF::String&&)+0x78) [0x7f4f2ebd016e]
STDERR: 16  0x7f4f2e1db9ff /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(void IPC::callMemberFunctionImpl<WebKit::WebPage, void (WebKit::WebPage::*)(unsigned long, WebCore::CaptureDevice&&, WebCore::CaptureDevice&&, WTF::String&&), std::tuple<unsigned long, WebCore::CaptureDevice, WebCore::CaptureDevice, WTF::String>, 0ul, 1ul, 2ul, 3ul>(WebKit::WebPage*, void (WebKit::WebPage::*)(unsigned long, WebCore::CaptureDevice&&, WebCore::CaptureDevice&&, WTF::String&&), std::tuple<unsigned long, WebCore::CaptureDevice, WebCore::CaptureDevice, WTF::String>&&, std::integer_sequence<unsigned long, 0ul, 1ul, 2ul, 3ul>)+0xd2) [0x7f4f2e1db9ff]
STDERR: 17  0x7f4f2e1d4134 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(void IPC::callMemberFunction<WebKit::WebPage, void (WebKit::WebPage::*)(unsigned long, WebCore::CaptureDevice&&, WebCore::CaptureDevice&&, WTF::String&&), std::tuple<unsigned long, WebCore::CaptureDevice, WebCore::CaptureDevice, WTF::String>, std::integer_sequence<unsigned long, 0ul, 1ul, 2ul, 3ul> >(std::tuple<unsigned long, WebCore::CaptureDevice, WebCore::CaptureDevice, WTF::String>&&, WebKit::WebPage*, void (WebKit::WebPage::*)(unsigned long, WebCore::CaptureDevice&&, WebCore::CaptureDevice&&, WTF::String&&))+0x41) [0x7f4f2e1d4134]
STDERR: 18  0x7f4f2e1cf069 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(void IPC::handleMessage<Messages::WebPage::UserMediaAccessWasGranted, WebKit::WebPage, void (WebKit::WebPage::*)(unsigned long, WebCore::CaptureDevice&&, WebCore::CaptureDevice&&, WTF::String&&)>(IPC::Decoder&, WebKit::WebPage*, void (WebKit::WebPage::*)(unsigned long, WebCore::CaptureDevice&&, WebCore::CaptureDevice&&, WTF::String&&))+0xba) [0x7f4f2e1cf069]
STDERR: 19  0x7f4f2e1c3d11 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebKit::WebPage::didReceiveWebPageMessage(IPC::Connection&, IPC::Decoder&)+0x4545) [0x7f4f2e1c3d11]
STDERR: 20  0x7f4f2ebd0e80 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebKit::WebPage::didReceiveMessage(IPC::Connection&, IPC::Decoder&)+0x240) [0x7f4f2ebd0e80]
STDERR: 21  0x7f4f2e429c51 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&, IPC::Decoder&)+0x125) [0x7f4f2e429c51]
STDERR: 22  0x7f4f2e90c722 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebKit::WebProcess::didReceiveMessage(IPC::Connection&, IPC::Decoder&)+0x4c) [0x7f4f2e90c722]
STDERR: 23  0x7f4f2e407278 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(IPC::Connection::dispatchMessage(IPC::Decoder&)+0x184) [0x7f4f2e407278]
STDERR: 24  0x7f4f2e4073ed /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(IPC::Connection::dispatchMessage(std::unique_ptr<IPC::Decoder, std::default_delete<IPC::Decoder> >)+0x173) [0x7f4f2e4073ed]
STDERR: 25  0x7f4f2e4078c3 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(IPC::Connection::dispatchOneIncomingMessage()+0xcd) [0x7f4f2e4078c3]
STDERR: 26  0x7f4f2e406fc0 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(+0x93e2fc0) [0x7f4f2e406fc0]
STDERR: 27  0x7f4f2e40edc8 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(+0x93eadc8) [0x7f4f2e40edc8]
STDERR: 28  0x7f4f2e1ff7b6 /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WTF::Function<void ()>::operator()() const+0x5e) [0x7f4f2e1ff7b6]
STDERR: 29  0x7f4f237c1ac2 /app/webkit/WebKitBuild/Debug/lib/libjavascriptcoregtk-4.0.so.18(WTF::RunLoop::performWork()+0xce) [0x7f4f237c1ac2]
STDERR: 30  0x7f4f23836010 /app/webkit/WebKitBuild/Debug/lib/libjavascriptcoregtk-4.0.so.18(+0x311e010) [0x7f4f23836010]
STDERR: 31  0x7f4f23836034 /app/webkit/WebKitBuild/Debug/lib/libjavascriptcoregtk-4.0.so.18(+0x311e034) [0x7f4f23836034]
STDERR: LEAK: 1 WebPageProxy



Full trace:

Core was generated by `/app/webkit/WebKitBuild/Debug/bin/WebKitWebProcess 3 13'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007fc4416d57fe in WTFCrash () at /app/webkit/Source/WTF/wtf/Assertions.cpp:255
255	    *(int *)(uintptr_t)0xbbadbeef = 0;
[Current thread is 1 (LWP 5530)]

Thread 11 (LWP 5564):
#0  0x00000031308df56d in poll () at /lib/libc.so.6
#1  0x00007fc43728ecb6 in  () at /lib/libglib-2.0.so.0
#2  0x00007fc43728f052 in g_main_loop_run () at /lib/libglib-2.0.so.0
#3  0x00007fc437a7f946 in  () at /lib/libgio-2.0.so.0
#4  0x00007fc4372b6ef5 in  () at /lib/libglib-2.0.so.0
#5  0x0000003131007444 in  () at /lib/libpthread.so.0
#6  0x00000031308e827f in clone () at /lib/libc.so.6

Thread 10 (LWP 5567):
#0  0x00000031308e39b9 in syscall () at /lib/libc.so.6
#1  0x00007fc4372d4faa in g_cond_wait_until () at /lib/libglib-2.0.so.0
#2  0x00007fc437261d39 in  () at /lib/libglib-2.0.so.0
#3  0x00007fc43726235c in g_async_queue_timeout_pop () at /lib/libglib-2.0.so.0
#4  0x00007fc4372b79bd in  () at /lib/libglib-2.0.so.0
#5  0x00007fc4372b6ef5 in  () at /lib/libglib-2.0.so.0
#6  0x0000003131007444 in  () at /lib/libpthread.so.0
#7  0x00000031308e827f in clone () at /lib/libc.so.6

Thread 9 (LWP 5547):
#0  0x00000031308df56d in poll () at /lib/libc.so.6
#1  0x00007fc43728ecb6 in  () at /lib/libglib-2.0.so.0
#2  0x00007fc43728f052 in g_main_loop_run () at /lib/libglib-2.0.so.0
#3  0x00007fc4417794ed in WTF::RunLoop::run() () at /app/webkit/Source/WTF/wtf/glib/RunLoopGLib.cpp:96
#4  0x00007fc441776aaa in WTF::WorkQueue::<lambda()>::operator()(void) const (__closure=0x7fc42c5f80f8) at /app/webkit/Source/WTF/wtf/generic/WorkQueueGeneric.cpp:43
#5  0x00007fc4417789ba in WTF::Function<void()>::CallableWrapper<WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::<lambda()> >::call(void) (this=0x7fc42c5f80f0) at ../../Source/WTF/wtf/Function.h:101
#6  0x00007fc44c1427b6 in WTF::Function<void()>::operator()(void) const (this=0x7fc42abcbd20) at DerivedSources/ForwardingHeaders/wtf/Function.h:56
#7  0x00007fc441707c02 in WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) (newThreadContext=0x7fc42c5f7140) at /app/webkit/Source/WTF/wtf/Threading.cpp:136
#8  0x00007fc441775658 in WTF::wtfThreadEntryPoint(void*) (context=0x7fc42c5f7140) at /app/webkit/Source/WTF/wtf/ThreadingPthreads.cpp:202
#9  0x0000003131007444 in  () at /lib/libpthread.so.0
#10 0x00000031308e827f in clone () at /lib/libc.so.6

Thread 8 (LWP 5566):
#0  0x00000031308df56d in poll () at /lib/libc.so.6
#1  0x00007fc43728ecb6 in  () at /lib/libglib-2.0.so.0
#2  0x00007fc43728f052 in g_main_loop_run () at /lib/libglib-2.0.so.0
#3  0x00007fc4417794ed in WTF::RunLoop::run() () at /app/webkit/Source/WTF/wtf/glib/RunLoopGLib.cpp:96
#4  0x00007fc441776aaa in WTF::WorkQueue::<lambda()>::operator()(void) const (__closure=0x7fc42c5f81b8) at /app/webkit/Source/WTF/wtf/generic/WorkQueueGeneric.cpp:43
#5  0x00007fc4417789ba in WTF::Function<void()>::CallableWrapper<WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::<lambda()> >::call(void) (this=0x7fc42c5f81b0) at ../../Source/WTF/wtf/Function.h:101
#6  0x00007fc44c1427b6 in WTF::Function<void()>::operator()(void) const (this=0x7fc413df1d20) at DerivedSources/ForwardingHeaders/wtf/Function.h:56
#7  0x00007fc441707c02 in WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) (newThreadContext=0x7fc42c5f7280) at /app/webkit/Source/WTF/wtf/Threading.cpp:136
#8  0x00007fc441775658 in WTF::wtfThreadEntryPoint(void*) (context=0x7fc42c5f7280) at /app/webkit/Source/WTF/wtf/ThreadingPthreads.cpp:202
#9  0x0000003131007444 in  () at /lib/libpthread.so.0
#10 0x00000031308e827f in clone () at /lib/libc.so.6

Thread 7 (LWP 5568):
#0  0x000000313100d856 in pthread_cond_timedwait () at /lib/libpthread.so.0
#1  0x00007fc4417761c3 in WTF::ThreadCondition::timedWait(WTF::Mutex&, WTF::WallTime) (this=0x7fc4104888b8, mutex=..., absoluteTime=...) at /app/webkit/Source/WTF/wtf/ThreadingPthreads.cpp:543
#2  0x00007fc4416fd0cd in WTF::ParkingLot::parkConditionallyImpl(const void *, const WTF::ScopedLambda<bool()> &, const WTF::ScopedLambda<void()> &, const WTF::TimeWithDynamicClockType &) (address=0x7fc42c5587db, validation=..., beforeSleep=..., timeout=...) at /app/webkit/Source/WTF/wtf/ParkingLot.cpp:597
#3  0x00007fc44c465a9e in WTF::ParkingLot::parkConditionally<WTF::Condition::waitUntil(LockType&, const WTF::TimeWithDynamicClockType&) [with LockType = WTF::Lock]::<lambda()>, WTF::Condition::waitUntil(LockType&, const WTF::TimeWithDynamicClockType&) [with LockType = WTF::Lock]::<lambda()> >(const void *, const WTF::Condition::<lambda()> &, const WTF::Condition::<lambda()> &, const WTF::TimeWithDynamicClockType &) (address=0x7fc42c5587db, validation=..., beforeSleep=..., timeout=...) at DerivedSources/ForwardingHeaders/wtf/ParkingLot.h:84
#4  0x00007fc44c463c30 in WTF::Condition::waitUntil<WTF::Lock>(WTF::Lock&, WTF::TimeWithDynamicClockType const&) (this=0x7fc42c5587db, lock=..., timeout=...) at DerivedSources/ForwardingHeaders/wtf/Condition.h:75
#5  0x00007fc4416d8763 in WTF::Condition::waitFor<WTF::Lock>(WTF::Lock&, WTF::Seconds) (this=0x7fc42c5587db, lock=..., relativeTimeout=...) at ../../Source/WTF/wtf/Condition.h:115
#6  0x00007fc4416d7b98 in WTF::AutomaticThread::<lambda()>::operator()(void) const (__closure=0x7fc4104a9530) at /app/webkit/Source/WTF/wtf/AutomaticThread.cpp:208
#7  0x00007fc4416d8552 in WTF::Function<void()>::CallableWrapper<WTF::AutomaticThread::start(const WTF::AbstractLocker&)::<lambda()> >::call(void) (this=0x7fc4104a9528) at ../../Source/WTF/wtf/Function.h:101
#8  0x00007fc44c1427b6 in WTF::Function<void()>::operator()(void) const (this=0x7fc406ffed20) at DerivedSources/ForwardingHeaders/wtf/Function.h:56
#9  0x00007fc441707c02 in WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) (newThreadContext=0x7fc42c510280) at /app/webkit/Source/WTF/wtf/Threading.cpp:136
#10 0x00007fc441775658 in WTF::wtfThreadEntryPoint(void*) (context=0x7fc42c510280) at /app/webkit/Source/WTF/wtf/ThreadingPthreads.cpp:202
#11 0x0000003131007444 in  () at /lib/libpthread.so.0
#12 0x00000031308e827f in clone () at /lib/libc.so.6

Thread 6 (LWP 5542):
#0  0x000000313100d856 in pthread_cond_timedwait () at /lib/libpthread.so.0
#1  0x00007fc441795c20 in __gthread_cond_timedwait(__gthread_cond_t*, __gthread_mutex_t*, __gthread_time_t const*) (__cond=0x7fc42cef0898, __mutex=0xe2eef0, __abs_timeout=0x7fc42ceeca50) at /usr/include/c++/6.2.0/x86_64-unknown-linux/bits/gthr-default.h:871
#2  0x00007fc441799435 in std::condition_variable::__wait_until_impl<std::chrono::duration<long, std::ratio<1l, 1000000000l> > >(std::unique_lock<std::mutex>&, std::(anonymous namespace)::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > const&) (this=0x7fc42cef0898, __lock=..., __atime=...) at /usr/include/c++/6.2.0/condition_variable:166
#3  0x00007fc441798c91 in std::condition_variable::wait_until<std::chrono::duration<long, std::ratio<1l, 1000000000l> > >(std::unique_lock<std::mutex>&, std::(anonymous namespace)::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > const&) (this=0x7fc42cef0898, __lock=..., __atime=...) at /usr/include/c++/6.2.0/condition_variable:106
#4  0x00007fc4417988ae in std::_V2::condition_variable_any::wait_until<std::unique_lock<bmalloc::Mutex>, std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > >(std::unique_lock<bmalloc::Mutex>&, std::(anonymous namespace)::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > const&) (this=0x7fc42cef0898, __lock=..., __atime=...) at /usr/include/c++/6.2.0/condition_variable:274
#5  0x00007fc441797082 in std::_V2::condition_variable_any::wait_until<std::unique_lock<bmalloc::Mutex>, std::chrono::_V2::system_clock, std::chrono::duration<long int, std::ratio<1l, 1000000000l> >, bmalloc::Scavenger::threadRunLoop()::<lambda()> >(std::unique_lock<bmalloc::Mutex> &, const std::(anonymous namespace)::time_point<std::chrono::_V2::system_clock, std::chrono::duration<long, std::ratio<1l, 1000000000l> > > &, (anonymous namespace)::Scavenger::<lambda()>) (this=0x7fc42cef0898, __lock=..., __atime=..., __p=...) at /usr/include/c++/6.2.0/condition_variable:285
#6  0x00007fc441797039 in std::_V2::condition_variable_any::wait_for<std::unique_lock<bmalloc::Mutex>, long int, std::ratio<1l, 1000l>, bmalloc::Scavenger::threadRunLoop()::<lambda()> >(std::unique_lock<bmalloc::Mutex> &, const std::(anonymous namespace)::duration<long, std::ratio<1l, 1000l> > &, (anonymous namespace)::Scavenger::<lambda()>) (this=0x7fc42cef0898, __lock=..., __rtime=..., __p=...) at /usr/include/c++/6.2.0/condition_variable:300
#7  0x00007fc441796d18 in (anonymous namespace)::Scavenger::threadRunLoop() (this=0x7fc42cef0880) at /app/webkit/Source/bmalloc/bmalloc/Scavenger.cpp:385
#8  0x00007fc44179696e in (anonymous namespace)::Scavenger::threadEntryPoint((anonymous namespace)::Scavenger*) (scavenger=0x7fc42cef0880) at /app/webkit/Source/bmalloc/bmalloc/Scavenger.cpp:359
#9  0x00007fc441799daa in std::_Bind_simple<void (*(bmalloc::Scavenger*))(bmalloc::Scavenger*)>::_M_invoke<0ul>(std::_Index_tuple<0ul>) (this=0xe2ef58) at /usr/include/c++/6.2.0/functional:1400
#10 0x00007fc441799cfb in std::_Bind_simple<void (*(bmalloc::Scavenger*))(bmalloc::Scavenger*)>::operator()(void) (this=0xe2ef58) at /usr/include/c++/6.2.0/functional:1389
#11 0x00007fc441799cda in std::thread::_State_impl<std::_Bind_simple<void (*(bmalloc::Scavenger*))(bmalloc::Scavenger*)> >::_M_run(void) (this=0xe2ef50) at /usr/include/c++/6.2.0/thread:196
#12 0x00007fc43543cf6f in  () at /lib/libstdc++.so.6
#13 0x0000003131007444 in  () at /lib/libpthread.so.0
#14 0x00000031308e827f in clone () at /lib/libc.so.6

Thread 5 (LWP 5545):
#0  0x00000031308df56d in poll () at /lib/libc.so.6
#1  0x00007fc43728ecb6 in  () at /lib/libglib-2.0.so.0
#2  0x00007fc43728f052 in g_main_loop_run () at /lib/libglib-2.0.so.0
#3  0x00007fc4417794ed in WTF::RunLoop::run() () at /app/webkit/Source/WTF/wtf/glib/RunLoopGLib.cpp:96
#4  0x00007fc441776aaa in WTF::WorkQueue::<lambda()>::operator()(void) const (__closure=0x7fc42c5f8098) at /app/webkit/Source/WTF/wtf/generic/WorkQueueGeneric.cpp:43
#5  0x00007fc4417789ba in WTF::Function<void()>::CallableWrapper<WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::<lambda()> >::call(void) (this=0x7fc42c5f8090) at ../../Source/WTF/wtf/Function.h:101
#6  0x00007fc44c1427b6 in WTF::Function<void()>::operator()(void) const (this=0x7fc42bbcdd20) at DerivedSources/ForwardingHeaders/wtf/Function.h:56
#7  0x00007fc441707c02 in WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) (newThreadContext=0x7fc42c5f70a0) at /app/webkit/Source/WTF/wtf/Threading.cpp:136
#8  0x00007fc441775658 in WTF::wtfThreadEntryPoint(void*) (context=0x7fc42c5f70a0) at /app/webkit/Source/WTF/wtf/ThreadingPthreads.cpp:202
#9  0x0000003131007444 in  () at /lib/libpthread.so.0
#10 0x00000031308e827f in clone () at /lib/libc.so.6

Thread 4 (LWP 5544):
#0  0x00000031308df56d in poll () at /lib/libc.so.6
#1  0x00007fc43728ecb6 in  () at /lib/libglib-2.0.so.0
#2  0x00007fc43728f052 in g_main_loop_run () at /lib/libglib-2.0.so.0
#3  0x00007fc4417794ed in WTF::RunLoop::run() () at /app/webkit/Source/WTF/wtf/glib/RunLoopGLib.cpp:96
#4  0x00007fc441776aaa in WTF::WorkQueue::<lambda()>::operator()(void) const (__closure=0x7fc42c5f8050) at /app/webkit/Source/WTF/wtf/generic/WorkQueueGeneric.cpp:43
#5  0x00007fc4417789ba in WTF::Function<void()>::CallableWrapper<WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::<lambda()> >::call(void) (this=0x7fc42c5f8048) at ../../Source/WTF/wtf/Function.h:101
#6  0x00007fc44c1427b6 in WTF::Function<void()>::operator()(void) const (this=0x7fc42c3ced20) at DerivedSources/ForwardingHeaders/wtf/Function.h:56
#7  0x00007fc441707c02 in WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) (newThreadContext=0x7fc42c5f7050) at /app/webkit/Source/WTF/wtf/Threading.cpp:136
#8  0x00007fc441775658 in WTF::wtfThreadEntryPoint(void*) (context=0x7fc42c5f7050) at /app/webkit/Source/WTF/wtf/ThreadingPthreads.cpp:202
#9  0x0000003131007444 in  () at /lib/libpthread.so.0
#10 0x00000031308e827f in clone () at /lib/libc.so.6

Thread 3 (LWP 5563):
#0  0x00000031308df56d in poll () at /lib/libc.so.6
#1  0x00007fc43728ecb6 in  () at /lib/libglib-2.0.so.0
#2  0x00007fc43728eddc in g_main_context_iteration () at /lib/libglib-2.0.so.0
#3  0x00007fc43728ee21 in  () at /lib/libglib-2.0.so.0
#4  0x00007fc4372b6ef5 in  () at /lib/libglib-2.0.so.0
#5  0x0000003131007444 in  () at /lib/libpthread.so.0
#6  0x00000031308e827f in clone () at /lib/libc.so.6

Thread 2 (LWP 5546):
#0  0x00000031308df56d in poll () at /lib/libc.so.6
#1  0x00007fc43728ecb6 in  () at /lib/libglib-2.0.so.0
#2  0x00007fc43728f052 in g_main_loop_run () at /lib/libglib-2.0.so.0
#3  0x00007fc4417794ed in WTF::RunLoop::run() () at /app/webkit/Source/WTF/wtf/glib/RunLoopGLib.cpp:96
#4  0x00007fc441776aaa in WTF::WorkQueue::<lambda()>::operator()(void) const (__closure=0x7fc42c5f80c8) at /app/webkit/Source/WTF/wtf/generic/WorkQueueGeneric.cpp:43
#5  0x00007fc4417789ba in WTF::Function<void()>::CallableWrapper<WTF::WorkQueue::platformInitialize(char const*, WTF::WorkQueue::Type, WTF::WorkQueue::QOS)::<lambda()> >::call(void) (this=0x7fc42c5f80c0) at ../../Source/WTF/wtf/Function.h:101
#6  0x00007fc44c1427b6 in WTF::Function<void()>::operator()(void) const (this=0x7fc42b3ccd20) at DerivedSources/ForwardingHeaders/wtf/Function.h:56
#7  0x00007fc441707c02 in WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*) (newThreadContext=0x7fc42c5f70f0) at /app/webkit/Source/WTF/wtf/Threading.cpp:136
#8  0x00007fc441775658 in WTF::wtfThreadEntryPoint(void*) (context=0x7fc42c5f70f0) at /app/webkit/Source/WTF/wtf/ThreadingPthreads.cpp:202
#9  0x0000003131007444 in  () at /lib/libpthread.so.0
#10 0x00000031308e827f in clone () at /lib/libc.so.6

Thread 1 (LWP 5530):
#0  0x00007fc4416d57fe in WTFCrash() () at /app/webkit/Source/WTF/wtf/Assertions.cpp:255
#1  0x00007fc44d843da9 in (anonymous namespace)::MediaStreamTrack::mediaState() const (this=0x7fc41042a400) at ../../Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp:404
#2  0x00007fc44de0bbd8 in (anonymous namespace)::Document::updateIsPlayingMedia(uint64_t) (this=0x7fc411001f60, sourceElementID=0) at ../../Source/WebCore/dom/Document.cpp:4004
#3  0x00007fc44de0ba9f in (anonymous namespace)::Document::addAudioProducer((anonymous namespace)::MediaProducer*) (this=0x7fc411001f60, audioProducer=0x7fc41042a480) at ../../Source/WebCore/dom/Document.cpp:3979
#4  0x00007fc44d841fc8 in (anonymous namespace)::MediaStreamTrack::MediaStreamTrack((anonymous namespace)::ScriptExecutionContext &, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x1d8a70>) (this=0x7fc41042a400, context=..., privateTrack=<unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x1d8a70>) at ../../Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp:65
#5  0x00007fc44d841df3 in (anonymous namespace)::MediaStreamTrack::create((anonymous namespace)::ScriptExecutionContext &, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x1d8a70>) (context=..., privateTrack=<unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x1d8a70>) at ../../Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp:52
#6  0x00007fc44d83ffb4 in (anonymous namespace)::MediaStream::MediaStream((anonymous namespace)::ScriptExecutionContext &, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x1d8d25>) (this=0x7fc42c5bfb40, context=..., streamPrivate=<unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x1d8d25>) at ../../Source/WebCore/Modules/mediastream/MediaStream.cpp:108
#7  0x00007fc44d83f78d in (anonymous namespace)::MediaStream::create((anonymous namespace)::ScriptExecutionContext &, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x1d8d25>) (context=..., streamPrivate=<unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x1d8d25>) at ../../Source/WebCore/Modules/mediastream/MediaStream.cpp:65
#8  0x00007fc44d8750a0 in (anonymous namespace)::UserMediaRequest::<lambda(WTF::RefPtr<WebCore::MediaStreamPrivate, WTF::DumbPtrTraits<WebCore::MediaStreamPrivate> >&&)>::operator()(<unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x1b3b95>) (__closure=0x7fc4104111e8, privateStream=<unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x1b3b95>) at ../../Source/WebCore/Modules/mediastream/UserMediaRequest.cpp:230
#9  0x00007fc44d878866 in WTF::Function<void(WTF::RefPtr<WebCore::MediaStreamPrivate, WTF::DumbPtrTraits<WebCore::MediaStreamPrivate> >&&)>::CallableWrapper<WebCore::UserMediaRequest::allow(WebCore::CaptureDevice&&, WebCore::CaptureDevice&&, WTF::String&&)::<lambda(WTF::RefPtr<WebCore::MediaStreamPrivate, WTF::DumbPtrTraits<WebCore::MediaStreamPrivate> >&&)> >::call(<unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x1b3b95>) (this=0x7fc4104111e0, in#0=<unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x1b3b95>) at DerivedSources/ForwardingHeaders/wtf/Function.h:101
#10 0x00007fc44e933b62 in WTF::Function<void(WTF::RefPtr<WebCore::MediaStreamPrivate, WTF::DumbPtrTraits<WebCore::MediaStreamPrivate> >&&)>::operator()(<unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x16e583>) const (this=0x7ffe8de38df0, in#0=<unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x16e583>) at DerivedSources/ForwardingHeaders/wtf/Function.h:56
#11 0x00007fc44e928591 in (anonymous namespace)::RealtimeMediaSourceCenter::createMediaStream(<unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15d532>, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0xf4c77>, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0xfacb6>, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0xfacb6>, const (anonymous namespace)::MediaStreamRequest &) (this=0x7fc454fe5bc0 <_ZZN7WebCore25RealtimeMediaSourceCenter9singletonEvE6center>, completionHandler=<unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15d532>, hashSalt=<unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0xf4c77>, audioDevice=<unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0xfacb6>, videoDevice=<unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0xfacb6>, request=...) at ../../Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.cpp:104
#12 0x00007fc44d875302 in (anonymous namespace)::UserMediaRequest::allow(<unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x13f04a>, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x13f04a>, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x13e972>) (this=0x7fc42a0f4380, audioDevice=<unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x13f04a>, videoDevice=<unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x13f04a>, deviceIdentifierHashSalt=<unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x13e972>) at ../../Source/WebCore/Modules/mediastream/UserMediaRequest.cpp:242
#13 0x00007fc44c9a20d7 in (anonymous namespace)::UserMediaPermissionRequestManager::userMediaAccessWasGranted(uint64_t, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x220d51>, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x220d51>, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x1ee37a>) (this=0x11e4e60, requestID=1, audioDevice=<unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x220d51>, videoDevice=<unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x220d51>, deviceIdentifierHashSalt=<unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x1ee37a>) at ../../Source/WebKit/WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:158
#14 0x00007fc44cb1316e in (anonymous namespace)::WebPage::userMediaAccessWasGranted(uint64_t, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x3af3e0>, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x3af3e0>, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x31a049>) (this=0x7fc42c5c1000, userMediaID=1, audioDevice=<unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x3af3e0>, videoDevice=<unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x3af3e0>, mediaDeviceIdentifierHashSalt=<unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x31a049>) at /app/webkit/Source/WebKit/WebProcess/WebPage/WebPage.cpp:4019
#15 0x00007fc44c11e9ff in IPC::callMemberFunctionImpl<WebKit::WebPage, void (WebKit::WebPage::*)(long unsigned int, WebCore::CaptureDevice&&, WebCore::CaptureDevice&&, WTF::String&&), std::tuple<long unsigned int, WebCore::CaptureDevice, WebCore::CaptureDevice, WTF::String>, 0ul, 1ul, 2ul, 3ul>((anonymous namespace)::WebPage *, void ((anonymous namespace)::WebPage::*)((anonymous namespace)::WebPage * const, unsigned long, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a412>, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a417>, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a41c>), <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x13482a>, std::index_sequence) (object=0x7fc42c5c1000, function=(void ((anonymous namespace)::WebPage::*)((anonymous namespace)::WebPage * const, unsigned long, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a412>, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a417>, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a41c>)) 0x7fc44cb130f6 <(anonymous namespace)::WebPage::userMediaAccessWasGranted(uint64_t, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x3af3e0>, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x3af3e0>, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x31a049>)>, args=<unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x13482a>) at ../../Source/WebKit/Platform/IPC/HandleMessage.h:41
#16 0x00007fc44c117134 in IPC::callMemberFunction<WebKit::WebPage, void (WebKit::WebPage::*)(long unsigned int, WebCore::CaptureDevice&&, WebCore::CaptureDevice&&, WTF::String&&), std::tuple<long unsigned int, WebCore::CaptureDevice, WebCore::CaptureDevice, WTF::String> >(<unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x13482a>, (anonymous namespace)::WebPage *, void ((anonymous namespace)::WebPage::*)((anonymous namespace)::WebPage * const, unsigned long, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a412>, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a417>, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a41c>)) (args=<unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x13482a>, object=0x7fc42c5c1000, function=(void ((anonymous namespace)::WebPage::*)((anonymous namespace)::WebPage * const, unsigned long, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a412>, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a417>, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a41c>)) 0x7fc44cb130f6 <(anonymous namespace)::WebPage::userMediaAccessWasGranted(uint64_t, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x3af3e0>, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x3af3e0>, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x31a049>)>) at ../../Source/WebKit/Platform/IPC/HandleMessage.h:47
#17 0x00007fc44c112069 in IPC::handleMessage<Messages::WebPage::UserMediaAccessWasGranted, WebKit::WebPage, void (WebKit::WebPage::*)(long unsigned int, WebCore::CaptureDevice&&, WebCore::CaptureDevice&&, WTF::String&&)>(IPC::Decoder &, (anonymous namespace)::WebPage *, void ((anonymous namespace)::WebPage::*)((anonymous namespace)::WebPage * const, unsigned long, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a412>, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a417>, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a41c>)) (decoder=..., object=0x7fc42c5c1000, function=(void ((anonymous namespace)::WebPage::*)((anonymous namespace)::WebPage * const, unsigned long, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a412>, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a417>, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x15a41c>)) 0x7fc44cb130f6 <(anonymous namespace)::WebPage::userMediaAccessWasGranted(uint64_t, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x3af3e0>, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x3af3e0>, <unknown type in /app/webkit/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37, CU 0x0, DIE 0x31a049>)>) at ../../Source/WebKit/Platform/IPC/HandleMessage.h:133
#18 0x00007fc44c106d11 in (anonymous namespace)::WebPage::didReceiveWebPageMessage(IPC::Connection&, IPC::Decoder&) (this=0x7fc42c5c1000, connection=..., decoder=...) at /app/webkit/WebKitBuild/Debug/DerivedSources/WebKit/WebPageMessageReceiver.cpp:1196
#19 0x00007fc44cb13e80 in (anonymous namespace)::WebPage::didReceiveMessage(IPC::Connection&, IPC::Decoder&) (this=0x7fc42c5c1000, connection=..., decoder=...) at /app/webkit/Source/WebKit/WebProcess/WebPage/WebPage.cpp:4315
#20 0x00007fc44c36cc51 in IPC::MessageReceiverMap::dispatchMessage(IPC::Connection&, IPC::Decoder&) (this=0xebf190, connection=..., decoder=...) at /app/webkit/Source/WebKit/Platform/IPC/MessageReceiverMap.cpp:123
#21 0x00007fc44c84f722 in (anonymous namespace)::WebProcess::didReceiveMessage(IPC::Connection&, IPC::Decoder&) (this=0xebf120, connection=..., decoder=...) at ../../Source/WebKit/WebProcess/WebProcess.cpp:660
#22 0x00007fc44c34a278 in IPC::Connection::dispatchMessage(IPC::Decoder&) (this=0x7fc42c5e6000, decoder=...) at /app/webkit/Source/WebKit/Platform/IPC/Connection.cpp:978
#23 0x00007fc44c34a3ed in IPC::Connection::dispatchMessage(std::unique_ptr<IPC::Decoder, std::default_delete<IPC::Decoder> >) (this=0x7fc42c5e6000, message=std::unique_ptr<IPC::Decoder> containing 0x7fc4104fe360) at /app/webkit/Source/WebKit/Platform/IPC/Connection.cpp:1005
#24 0x00007fc44c34a8c3 in IPC::Connection::dispatchOneIncomingMessage() (this=0x7fc42c5e6000) at /app/webkit/Source/WebKit/Platform/IPC/Connection.cpp:1074
#25 0x00007fc44c349fc0 in IPC::Connection::<lambda()>::operator()(void) (__closure=0x7fc42c5e52e8) at /app/webkit/Source/WebKit/Platform/IPC/Connection.cpp:956
#26 0x00007fc44c351dc8 in WTF::Function<void()>::CallableWrapper<IPC::Connection::enqueueIncomingMessage(std::unique_ptr<IPC::Decoder>)::<lambda()> >::call(void) (this=0x7fc42c5e52e0) at DerivedSources/ForwardingHeaders/wtf/Function.h:101
#27 0x00007fc44c1427b6 in WTF::Function<void()>::operator()(void) const (this=0x7ffe8de3b5c0) at DerivedSources/ForwardingHeaders/wtf/Function.h:56
#28 0x00007fc441704ac2 in WTF::RunLoop::performWork() (this=0x7fc42c5f9000) at /app/webkit/Source/WTF/wtf/RunLoop.cpp:106
#29 0x00007fc441779010 in WTF::RunLoop::<lambda(gpointer)>::operator()(gpointer) const (__closure=0x0, userData=0x7fc42c5f9000) at /app/webkit/Source/WTF/wtf/glib/RunLoopGLib.cpp:68
#30 0x00007fc441779034 in WTF::RunLoop::<lambda(gpointer)>::_FUN(gpointer) () at /app/webkit/Source/WTF/wtf/glib/RunLoopGLib.cpp:70
#31 0x00007fc441778fb0 in WTF::<lambda(GSource*, GSourceFunc, gpointer)>::operator()(GSource *, GSourceFunc, gpointer) const (__closure=0x0, source=0xebe9e0, callback=0x7fc441779017 <WTF::RunLoop::<lambda(gpointer)>::_FUN(gpointer)>, userData=0x7fc42c5f9000) at /app/webkit/Source/WTF/wtf/glib/RunLoopGLib.cpp:45
#32 0x00007fc441778fdf in WTF::<lambda(GSource*, GSourceFunc, gpointer)>::_FUN(GSource *, GSourceFunc, gpointer) () at /app/webkit/Source/WTF/wtf/glib/RunLoopGLib.cpp:46
#33 0x00007fc43728e96a in g_main_context_dispatch () at /lib/libglib-2.0.so.0
#34 0x00007fc43728ed28 in  () at /lib/libglib-2.0.so.0
#35 0x00007fc43728f052 in g_main_loop_run () at /lib/libglib-2.0.so.0
#36 0x00007fc4417794ed in WTF::RunLoop::run() () at /app/webkit/Source/WTF/wtf/glib/RunLoopGLib.cpp:96
#37 0x00007fc44cb87261 in (anonymous namespace)::ChildProcessMain<WebKit::WebProcess, WebKit::WebProcessMain>(int, char**) (argc=3, argv=0x7ffe8de3b9c8) at ../../Source/WebKit/Shared/unix/ChildProcessMain.h:61
#38 0x00007fc44cb8451e in (anonymous namespace)::WebProcessMainUnix(int, char**) (argc=3, argv=0x7ffe8de3b9c8) at ../../Source/WebKit/WebProcess/gtk/WebProcessMainGtk.cpp:67
#39 0x0000000000400d31 in main(int, char**) (argc=3, argv=0x7ffe8de3b9c8) at /app/webkit/Source/WebKit/WebProcess/EntryPoint/unix/WebProcessMain.cpp:52



----


For some reason the webrtc test are not run in debug mode so we could not notice the regression in the dashboard
Comment 12 Thibault Saunier 2019-01-14 06:51:43 PST
Reported issue is fixed by https://bugs.webkit.org/show_bug.cgi?id=193397
Comment 13 Eric Carlson 2019-01-14 11:14:35 PST
(In reply to Thibault Saunier from comment #12)
> Reported issue is fixed by https://bugs.webkit.org/show_bug.cgi?id=193397

Thank you for fixing this Thibault, my apologies for missing it!