Bug 279957
| Summary: | [GTK][WPE][Skia] CPU rendering: DisplayList destructed on wrong thread | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Nikolas Zimmermann <zimmermann> |
| Component: | WPE WebKit | Assignee: | Nikolas Zimmermann <zimmermann> |
| Status: | RESOLVED FIXED | ||
| Severity: | Normal | CC: | bugs-noreply |
| Priority: | P2 | ||
| Version: | WebKit Nightly Build | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Bug Depends on: | |||
| Bug Blocks: | 279618 | ||
Nikolas Zimmermann
The DisplayList recording in CoordinatedGraphicsLayerSkia happens on the main thread, and we currently try to destruct it in the worker thread -- that fires an assertion in assert-enabled builds - fix that.
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Nikolas Zimmermann
Pull request: https://github.com/WebKit/WebKit/pull/33886
Nikolas Zimmermann
ToT currently asserts this way in assert-enabled builds:
m_isOwnedByMainThread == isMainThread()
/host/home/nzimmermann/Software/GitRepositories/WebKit/WebKitBuild/WPE/Release/WTF/Headers/wtf/RefCounted.h(124) : void WTF::RefCountedBase::applyRefDerefThreadingCheck() const
1 0x7b00d379ca11 WTF::RefCountedBase::derefAllowingPartiallyDestroyedBase() const
2 0x7b00d3c80539 WTF::HashTable<WTF::ObjectIdentifierGeneric<WebCore::RenderingResourceIdentifierType, WTF::ObjectIdentifierThreadSafeAccessTraits<unsigned long>, unsigned long, (WTF::SupportsObjectIdentifierNullState)1>, WTF::KeyValuePair<WTF::ObjectIdentifierGeneric<WebCore::RenderingResourceIdentifierType, WTF::ObjectIdentifierThreadSafeAccessTraits<unsigned long>, unsigned long, (WTF::SupportsObjectIdentifierNullState)1>, std::variant<std::monostate, WTF::Ref<WebCore::ImageBuffer, WTF::RawPtrTraits<WebCore::ImageBuffer>, WTF::DefaultRefDerefTraits<WebCore::ImageBuffer> >, WTF::Ref<WebCore::RenderingResource, WTF::RawPtrTraits<WebCore::RenderingResource>, WTF::DefaultRefDerefTraits<WebCore::RenderingResource> >, WTF::Ref<WebCore::Font, WTF::RawPtrTraits<WebCore::Font>, WTF::DefaultRefDerefTraits<WebCore::Font> >, WTF::Ref<WebCore::FontCustomPlatformData, WTF::RawPtrTraits<WebCore::FontCustomPlatformData>, WTF::DefaultRefDerefTraits<WebCore::FontCustomPlatformData> > > >, WTF::KeyValuePairKeyExtractor<WTF::KeyValuePair<WTF::ObjectIdentifierGeneric<WebCore::RenderingResourceIdentifierType, WTF::ObjectIdentifierThreadSafeAccessTraits<unsigned long>, unsigned long, (WTF::SupportsObjectIdentifierNullState)1>, std::variant<std::monostate, WTF::Ref<WebCore::ImageBuffer, WTF::RawPtrTraits<WebCore::ImageBuffer>, WTF::DefaultRefDerefTraits<WebCore::ImageBuffer> >, WTF::Ref<WebCore::RenderingResource, WTF::RawPtrTraits<WebCore::RenderingResource>, WTF::DefaultRefDerefTraits<WebCore::RenderingResource> >, WTF::Ref<WebCore::Font, WTF::RawPtrTraits<WebCore::Font>, WTF::DefaultRefDerefTraits<WebCore::Font> >, WTF::Ref<WebCore::FontCustomPlatformData, WTF::RawPtrTraits<WebCore::FontCustomPlatformData>, WTF::DefaultRefDerefTraits<WebCore::FontCustomPlatformData> > > > >, WTF::DefaultHash<WTF::ObjectIdentifierGeneric<WebCore::RenderingResourceIdentifierType, WTF::ObjectIdentifierThreadSafeAccessTraits<unsigned long>, unsigned long, (WTF::SupportsObjectIdentifierNullState)1> >, WTF::HashMap<WTF::ObjectIdentifierGeneric<WebCore::RenderingResourceIdentifierType, WTF::ObjectIdentifierThreadSafeAccessTraits<unsigned long>, unsigned long, (WTF::SupportsObjectIdentifierNullState)1>, std::variant<std::monostate, WTF::Ref<WebCore::ImageBuffer, WTF::RawPtrTraits<WebCore::ImageBuffer>, WTF::DefaultRefDerefTraits<WebCore::ImageBuffer> >, WTF::Ref<WebCore::RenderingResource, WTF::RawPtrTraits<WebCore::RenderingResource>, WTF::DefaultRefDerefTraits<WebCore::RenderingResource> >, WTF::Ref<WebCore::Font, WTF::RawPtrTraits<WebCore::Font>, WTF::DefaultRefDerefTraits<WebCore::Font> >, WTF::Ref<WebCore::FontCustomPlatformData, WTF::RawPtrTraits<WebCore::FontCustomPlatformData>, WTF::DefaultRefDerefTraits<WebCore::FontCustomPlatformData> > >, WTF::DefaultHash<WTF::ObjectIdentifierGeneric<WebCore::RenderingResourceIdentifierType, WTF::ObjectIdentifierThreadSafeAccessTraits<unsigned long>, unsigned long, (WTF::SupportsObjectIdentifierNullState)1> >, WTF::HashTraits<WTF::ObjectIdentifierGeneric<WebCore::RenderingResourceIdentifierType, WTF::ObjectIdentifierThreadSafeAccessTraits<unsigned long>, unsigned long, (WTF::SupportsObjectIdentifierNullState)1> >, WTF::HashTraits<std::variant<std::monostate, WTF::Ref<WebCore::ImageBuffer, WTF::RawPtrTraits<WebCore::ImageBuffer>, WTF::DefaultRefDerefTraits<WebCore::ImageBuffer> >, WTF::Ref<WebCore::RenderingResource, WTF::RawPtrTraits<WebCore::RenderingResource>, WTF::DefaultRefDerefTraits<WebCore::RenderingResource> >, WTF::Ref<WebCore::Font, WTF::RawPtrTraits<WebCore::Font>, WTF::DefaultRefDerefTraits<WebCore::Font> >, WTF::Ref<WebCore::FontCustomPlatformData, WTF::RawPtrTraits<WebCore::FontCustomPlatformData>, WTF::DefaultRefDerefTraits<WebCore::FontCustomPlatformData> > > >, WTF::HashTableTraits>::KeyValuePairTraits, WTF::HashTraits<WTF::ObjectIdentifierGeneric<WebCore::RenderingResourceIdentifierType, WTF::ObjectIdentifierThreadSafeAccessTraits<unsigned long>, unsigned long, (WTF::SupportsObjectIdentifierNullState)1> > >::deallocateTable(WTF::KeyValuePair<WTF::ObjectIdentifierGeneric<WebCore::RenderingResourceIdentifierType, WTF::ObjectIdentifierThreadSafeAccessTraits<unsigned long>, unsigned long, (WTF::SupportsObjectIdentifierNullState)1>, std::variant<std::monostate, WTF::Ref<WebCore::ImageBuffer, WTF::RawPtrTraits<WebCore::ImageBuffer>, WTF::DefaultRefDerefTraits<WebCore::ImageBuffer> >, WTF::Ref<WebCore::RenderingResource, WTF::RawPtrTraits<WebCore::RenderingResource>, WTF::DefaultRefDerefTraits<WebCore::RenderingResource> >, WTF::Ref<WebCore::Font, WTF::RawPtrTraits<WebCore::Font>, WTF::DefaultRefDerefTraits<WebCore::Font> >, WTF::Ref<WebCore::FontCustomPlatformData, WTF::RawPtrTraits<WebCore::FontCustomPlatformData>, WTF::DefaultRefDerefTraits<WebCore::FontCustomPlatformData> > > >*)
3 0x7b00d646c087 WTF::Detail::CallableWrapper<WebCore::CoordinatedGraphicsLayer::paintTile(WebCore::IntRect const&, WebCore::IntRect const&, float)::{lambda()#1}, void>::~CallableWrapper()
4 0x7b00d63355fe WTF::WorkerPool::Worker::work()
5 0x7b00d626a617 WTF::Detail::CallableWrapper<WTF::AutomaticThread::start(WTF::AbstractLocker const&)::{lambda()#1}, void>::call()
6 0x7b00d62fa0b8 WTF::Thread::entryPoint(WTF::Thread::NewThreadContext*)
7 0x7b00d638208d WTF::wtfThreadEntryPoint(void*)
8 0x7b00cf48aa94 start_thread
9 0x7b00cf517c3c clone3
EWS
Committed 283908@main (925ebc7f5e3e): <https://commits.webkit.org/283908@main>
Reviewed commits have been landed. Closing PR #33886 and removing active labels.