[Webkit-unassigned] [Bug 223913] New: Occasional debug assert in GenericTaskQueue::~GenericTaskQueue

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Mon Mar 29 23:07:26 PDT 2021


https://bugs.webkit.org/show_bug.cgi?id=223913

            Bug ID: 223913
           Summary: Occasional debug assert in
                    GenericTaskQueue::~GenericTaskQueue
           Product: WebKit
           Version: WebKit Nightly Build
          Hardware: Unspecified
                OS: Unspecified
            Status: NEW
          Severity: Normal
          Priority: P2
         Component: Media
          Assignee: webkit-unassigned at lists.webkit.org
          Reporter: rniwa at webkit.org
                CC: cdumez at apple.com, jer.noble at apple.com

e.g.
frame #0: JavaScriptCore`WTFCrash+14
frame #1: WebCore`WTFCrashWithInfo(int, char const*, char const*, int)+27
frame #2: WebCore`WTF::WeakPtrFactory<WebCore::TaskDispatcher<WebCore::Timer>, WTF::EmptyCounter>::initializeIfNeeded(WebCore::TaskDispatcher<WebCore::Timer> const&) const+161
frame #3: WebCore`WTF::WeakPtr<WebCore::TaskDispatcher<WebCore::Timer>, WTF::EmptyCounter> WTF::WeakPtrFactory<WebCore::TaskDispatcher<WebCore::Timer>, WTF::EmptyCounter>::createWeakPtr<WebCore::TaskDispatcher<WebCore::Timer> >(WebCore::TaskDispatcher<WebCore::Timer>&) const+48
frame #4: WebCore`auto WTF::makeWeakPtr<WebCore::TaskDispatcher<WebCore::Timer> >(WebCore::TaskDispatcher<WebCore::Timer>&)+52
frame #5: WebCore`WebCore::TaskDispatcher<WebCore::Timer>::postTask(WTF::Function<void ()>&&)+96
frame #6: WebCore`WebCore::GenericTaskQueue<WebCore::Timer>::~GenericTaskQueue()+109
frame #7: WebCore`WebCore::GenericTaskQueue<WebCore::Timer>::~GenericTaskQueue()+21
frame #8: WebCore`-[WebCoreAVFLoaderDelegate .cxx_destruct]+33

WeakPtrFactory::initializeIfNeeded asserts that if WeakPtrFactory was created on the main thread or if it was not,  initializeIfNeeded should also be called on the main thread or not. However, this is not necessary the case for TaskDispatcher<Timer>, which uses a lock to synchronize two threads. In this particular case, it’s safe to avoid doing any work since WeakPtr was never allocated, meaning we had never scheduled a task on this TaskDispatcher<Timer>. Alternatively, we can eagerly initialize the WeakPtrFactory in TaskDispatcher<Timer>.

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20210330/116c344b/attachment.htm>


More information about the webkit-unassigned mailing list