Bug 275583
| Summary: | [GTK][WPE] DRMDeviceNode needs to be ThreadSafeRefCounted | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Nikolas Zimmermann <zimmermann> |
| Component: | WPE WebKit | Assignee: | Carlos Garcia Campos <cgarcia> |
| Status: | RESOLVED FIXED | ||
| Severity: | Normal | CC: | bugs-noreply, cgarcia, philn, webkit-bug-importer |
| Priority: | P2 | ||
| Version: | WebKit Local Build | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
Nikolas Zimmermann
(process:2581181): GLib-GObject-CRITICAL **: 22:13:44.946: g_signal_connect_object: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed
ERROR: Failed to make thread real time: GDBus.Error:org.freedesktop.DBus.Error.Failed: No such file or directory
/host/home/nzimmermann/Software/GitRepositories/WebKit/Source/WTF/wtf/linux/RealTimeThreads.cpp(224) : void WTF::RealTimeThreads::realTimeKitMakeThreadRealTime(uint64_t, uint64_t, uint32_t)
ERROR: Failed to make thread real time: GDBus.Error:org.gtk.GDBus.UnmappedGError.Quark._g_2dio_2derror_2dquark.Code1: Could not map pid: Process ids could not be found: 2581258
/host/home/nzimmermann/Software/GitRepositories/WebKit/Source/WTF/wtf/linux/RealTimeThreads.cpp(224) : void WTF::RealTimeThreads::realTimeKitMakeThreadRealTime(uint64_t, uint64_t, uint32_t)
ASSERTION FAILED: Unsafe to ref/deref from different threads
m_isOwnedByMainThread == isMainThread()
/host/home/nzimmermann/Software/GitRepositories/WebKit/WebKitBuild/WPE/Debug/WTF/Headers/wtf/RefCounted.h(119) : void WTF::RefCountedBase::applyRefDerefThreadingCheck() const
1 0x7ef967eef599 WTF::RefCountedBase::applyRefDerefThreadingCheck() const
2 0x7ef967f0da70 WTF::RefCountedBase::refAllowingPartiallyDestroyed() const
3 0x7ef967f0db84 WTF::RefCountedBase::ref() const
4 0x7ef9698c3d0b WTF::DefaultRefDerefTraits<WebCore::DRMDeviceNode>::refIfNotNull(WebCore::DRMDeviceNode*)
5 0x7ef9698c24d0 WTF::RefPtr<WebCore::DRMDeviceNode, WTF::RawPtrTraits<WebCore::DRMDeviceNode>, WTF::DefaultRefDerefTraits<WebCore::DRMDeviceNode> >::RefPtr(WTF::RefPtr<WebCore::DRMDeviceNode, WTF::RawPtrTraits<WebCore::DRMDeviceNode>, WTF::DefaultRefDerefTraits<WebCore::DRMDeviceNode> > const&)
6 0x7ef970afbff6 WebCore::DRMDeviceManager::mainDeviceNode(WebCore::DRMDeviceManager::NodeType) const
7 0x7ef970afc070 WebCore::DRMDeviceManager::mainGBMDeviceNode(WebCore::DRMDeviceManager::NodeType) const
8 0x7ef970afce14 WebCore::GBMBufferSwapchain::getBuffer(WebCore::GBMBufferSwapchain::BufferDescription const&)
9 0x7ef970b52985 WebCore::MediaPlayerPrivateGStreamer::pushDMABufToCompositor()
10 0x7ef970b548c5 WebCore::MediaPlayerPrivateGStreamer::triggerRepaint(WTF::GRefPtr<_GstSample>&&)
...
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Philippe Normand
*** Bug 274152 has been marked as a duplicate of this bug. ***
Alexey Proskuryakov
Is this actually sufficient for it to be thread safe? It seems like even naively, DRMDeviceNode would be the next one to assert when ref'ing DRMDeviceManager members.
Carlos Garcia Campos
Pull request: https://github.com/WebKit/WebKit/pull/30341
EWS
Committed 280530@main (14d24d0067bb): <https://commits.webkit.org/280530@main>
Reviewed commits have been landed. Closing PR #30341 and removing active labels.