Bug 217525 - ASSERTION FAILED: REGRESSION(r268052?): WTF::CompletionHandler<void ()>::~CompletionHandler(): Completion handler should always be called !m_function
Summary: ASSERTION FAILED: REGRESSION(r268052?): WTF::CompletionHandler<void ()>::~Com...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Media (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: youenn fablet
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2020-10-09 12:02 PDT by Hector Lopez
Modified: 2020-10-12 10:30 PDT (History)
9 users (show)

See Also:


Attachments
Crash log fo imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-stop.html (115.30 KB, text/plain)
2020-10-09 12:02 PDT, Hector Lopez
no flags Details
Patch (7.49 KB, patch)
2020-10-12 02:55 PDT, youenn fablet
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Hector Lopez 2020-10-09 12:02:28 PDT
Created attachment 410959 [details]
Crash log fo imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-stop.html

imported/w3c/web-platform-tests/mediacapture-record/MediaRecorder-stop.html

Test is a flaky failure according to history on macOS Catalina wk2 Debug. First occurrence of failure is at r268054 but I believe this crash might be associated with change at r268052. 

History:

https://results.webkit.org/?suite=layout-tests&test=imported%2Fw3c%2Fweb-platform-tests%2Fmediacapture-record%2FMediaRecorder-stop.html&platform=mac&version_name=Catalina&style=debug&flavor=wk2

Crash log as seen on stderr:

ASSERTION FAILED: Completion handler should always be called
!m_function
/Volumes/Data/slave/catalina-debug/build/WebKitBuild/Debug/usr/local/include/wtf/CompletionHandler.h(53) : WTF::CompletionHandler<void ()>::~CompletionHandler()
1   0x68e144699 WTFCrash
2   0x66df885f7 WTF::CompletionHandler<void ()>::~CompletionHandler()
3   0x66df88595 WTF::CompletionHandler<void ()>::~CompletionHandler()
4   0x66ffa5b76 WebCore::MediaRecorderPrivateWriter::flushCompressedSampleBuffers(WTF::CompletionHandler<void ()>&&)::$_4::~$_4()
5   0x66ff9f3d5 WebCore::MediaRecorderPrivateWriter::flushCompressedSampleBuffers(WTF::CompletionHandler<void ()>&&)::$_4::~$_4()
6   0x66ffa5262 WTF::BlockPtr<void ()> WTF::BlockPtr<void ()>::fromCallable<WebCore::MediaRecorderPrivateWriter::flushCompressedSampleBuffers(WTF::CompletionHandler<void ()>&&)::$_4>(WebCore::MediaRecorderPrivateWriter::flushCompressedSampleBuffers(WTF::CompletionHandler<void ()>&&)::$_4)::'lambda'(void const*)::operator()(void const*) const
7   0x66ffa5205 WTF::BlockPtr<void ()> WTF::BlockPtr<void ()>::fromCallable<WebCore::MediaRecorderPrivateWriter::flushCompressedSampleBuffers(WTF::CompletionHandler<void ()>&&)::$_4>(WebCore::MediaRecorderPrivateWriter::flushCompressedSampleBuffers(WTF::CompletionHandler<void ()>&&)::$_4)::'lambda'(void const*)::__invoke(void const*)
8   0x7fff692b5bd5 _Block_release
9   0x7fff2aad3ebd -[AVAssetWriterInputMediaDataRequester dealloc]
10  0x7fff2aacc81e -[AVAssetWriterInputWritingHelper dealloc]
11  0x7fff318c0f12 NSKVODeallocate
12  0x7fff2aac8f2a -[AVAssetWriterInput dealloc]
13  0x7fff318c0f12 NSKVODeallocate
14  0x66ffaca59 WTF::RetainPtr<AVAssetWriterInput>::~RetainPtr()
15  0x66ff9ce05 WTF::RetainPtr<AVAssetWriterInput>::~RetainPtr()
16  0x66ff9cf4f WebCore::MediaRecorderPrivateWriter::~MediaRecorderPrivateWriter()
17  0x66ff9d235 WebCore::MediaRecorderPrivateWriter::~MediaRecorderPrivateWriter()
18  0x66ffaa99a WTF::ThreadSafeRefCounted<WebCore::MediaRecorderPrivateWriter, (WTF::DestructionThread)1>::deref() const::'lambda'()::operator()() const
19  0x66ffaa8f7 WTF::ThreadSafeRefCounted<WebCore::MediaRecorderPrivateWriter, (WTF::DestructionThread)1>::deref() const
20  0x66ffaa82f WTF::Ref<WebCore::MediaRecorderPrivateWriter, WTF::DumbPtrTraits<WebCore::MediaRecorderPrivateWriter> >::~Ref()
21  0x66ff9c705 WTF::Ref<WebCore::MediaRecorderPrivateWriter, WTF::DumbPtrTraits<WebCore::MediaRecorderPrivateWriter> >::~Ref()
22  0x6722a6e5b WebCore::MediaRecorderPrivateAVFImpl::~MediaRecorderPrivateAVFImpl()
23  0x6722a6ea5 WebCore::MediaRecorderPrivateAVFImpl::~MediaRecorderPrivateAVFImpl()
24  0x6722a6eec WebCore::MediaRecorderPrivateAVFImpl::~MediaRecorderPrivateAVFImpl()
25  0x66fff2a4f std::__1::default_delete<WebCore::MediaRecorderPrivate>::operator()(WebCore::MediaRecorderPrivate*) const
26  0x66fff29cf std::__1::unique_ptr<WebCore::MediaRecorderPrivate, std::__1::default_delete<WebCore::MediaRecorderPrivate> >::reset(WebCore::MediaRecorderPrivate*)
27  0x66fff2969 std::__1::unique_ptr<WebCore::MediaRecorderPrivate, std::__1::default_delete<WebCore::MediaRecorderPrivate> >::~unique_ptr()
28  0x66ffe0bd5 std::__1::unique_ptr<WebCore::MediaRecorderPrivate, std::__1::default_delete<WebCore::MediaRecorderPrivate> >::~unique_ptr()
29  0x66ffe10a1 WebCore::MediaRecorder::~MediaRecorder()
30  0x66ffe1245 WebCore::MediaRecorder::~MediaRecorder()
31  0x66ffe12cc WebCore::MediaRecorder::~MediaRecorder()
LEAK: 1 WebPageProxy

See attachment for full crash log
Comment 1 Radar WebKit Bug Importer 2020-10-09 12:02:45 PDT
<rdar://problem/70147564>
Comment 2 Hector Lopez 2020-10-09 12:24:21 PDT
Test expectation while investigated:

https://trac.webkit.org/changeset/268274/webkit
Comment 3 Hector Lopez 2020-10-09 16:28:53 PDT
imported/w3c/web-platform-tests/mediacapture-record/idlharness.window.html

Test is also a flaky crash according to history on macOS Catalina Debug with he seem ASSERTION FAILED. First occurrence of crash is at r268069

History:

https://results.webkit.org/?suite=layout-tests&test=imported%2Fw3c%2Fweb-platform-tests%2Fmediacapture-record%2Fidlharness.window.html&version_name=Catalina&style=debug&flavor=wk2



Stderr:
ASSERTION FAILED: Completion handler should always be called
!m_function
/Volumes/Data/slave/catalina-debug/build/WebKitBuild/Debug/usr/local/include/wtf/CompletionHandler.h(53) : WTF::CompletionHandler<void ()>::~CompletionHandler()
1   0x2d025cbf9 WTFCrash
2   0x2b00722b7 WTF::CompletionHandler<void ()>::~CompletionHandler()
3   0x2b0072255 WTF::CompletionHandler<void ()>::~CompletionHandler()
4   0x2b208f6f6 WebCore::MediaRecorderPrivateWriter::flushCompressedSampleBuffers(WTF::CompletionHandler<void ()>&&)::$_4::~$_4()
5   0x2b2088f55 WebCore::MediaRecorderPrivateWriter::flushCompressedSampleBuffers(WTF::CompletionHandler<void ()>&&)::$_4::~$_4()
6   0x2b208ede2 WTF::BlockPtr<void ()> WTF::BlockPtr<void ()>::fromCallable<WebCore::MediaRecorderPrivateWriter::flushCompressedSampleBuffers(WTF::CompletionHandler<void ()>&&)::$_4>(WebCore::MediaRecorderPrivateWriter::flushCompressedSampleBuffers(WTF::CompletionHandler<void ()>&&)::$_4)::'lambda'(void const*)::operator()(void const*) const
7   0x2b208ed85 WTF::BlockPtr<void ()> WTF::BlockPtr<void ()>::fromCallable<WebCore::MediaRecorderPrivateWriter::flushCompressedSampleBuffers(WTF::CompletionHandler<void ()>&&)::$_4>(WebCore::MediaRecorderPrivateWriter::flushCompressedSampleBuffers(WTF::CompletionHandler<void ()>&&)::$_4)::'lambda'(void const*)::__invoke(void const*)
8   0x7fff6f569bd5 _Block_release
9   0x7fff30d87ebd -[AVAssetWriterInputMediaDataRequester dealloc]
10  0x7fff30d8081e -[AVAssetWriterInputWritingHelper dealloc]
11  0x7fff37b74f12 NSKVODeallocate
12  0x7fff30d7cf2a -[AVAssetWriterInput dealloc]
13  0x7fff37b74f12 NSKVODeallocate
14  0x2b20965f9 WTF::RetainPtr<AVAssetWriterInput>::~RetainPtr()
15  0x2b2086985 WTF::RetainPtr<AVAssetWriterInput>::~RetainPtr()
16  0x2b2086acf WebCore::MediaRecorderPrivateWriter::~MediaRecorderPrivateWriter()
17  0x2b2086db5 WebCore::MediaRecorderPrivateWriter::~MediaRecorderPrivateWriter()
18  0x2b209453a WTF::ThreadSafeRefCounted<WebCore::MediaRecorderPrivateWriter, (WTF::DestructionThread)1>::deref() const::'lambda'()::operator()() const
19  0x2b2094497 WTF::ThreadSafeRefCounted<WebCore::MediaRecorderPrivateWriter, (WTF::DestructionThread)1>::deref() const
20  0x2b20943cf WTF::Ref<WebCore::MediaRecorderPrivateWriter, WTF::DumbPtrTraits<WebCore::MediaRecorderPrivateWriter> >::~Ref()
21  0x2b2086285 WTF::Ref<WebCore::MediaRecorderPrivateWriter, WTF::DumbPtrTraits<WebCore::MediaRecorderPrivateWriter> >::~Ref()
22  0x2b4394bcb WebCore::MediaRecorderPrivateAVFImpl::~MediaRecorderPrivateAVFImpl()
23  0x2b4394c15 WebCore::MediaRecorderPrivateAVFImpl::~MediaRecorderPrivateAVFImpl()
24  0x2b4394c5c WebCore::MediaRecorderPrivateAVFImpl::~MediaRecorderPrivateAVFImpl()
25  0x2b20dc5ef std::__1::default_delete<WebCore::MediaRecorderPrivate>::operator()(WebCore::MediaRecorderPrivate*) const
26  0x2b20dc56f std::__1::unique_ptr<WebCore::MediaRecorderPrivate, std::__1::default_delete<WebCore::MediaRecorderPrivate> >::reset(WebCore::MediaRecorderPrivate*)
27  0x2b20dc509 std::__1::unique_ptr<WebCore::MediaRecorderPrivate, std::__1::default_delete<WebCore::MediaRecorderPrivate> >::~unique_ptr()
28  0x2b20ca775 std::__1::unique_ptr<WebCore::MediaRecorderPrivate, std::__1::default_delete<WebCore::MediaRecorderPrivate> >::~unique_ptr()
29  0x2b20cac41 WebCore::MediaRecorder::~MediaRecorder()
30  0x2b20cade5 WebCore::MediaRecorder::~MediaRecorder()
31  0x2b20cae6c WebCore::MediaRecorder::~MediaRecorder()
LEAK: 1 WebPageProxy
Comment 4 youenn fablet 2020-10-12 02:55:18 PDT
Created attachment 411106 [details]
Patch
Comment 5 EWS 2020-10-12 10:30:33 PDT
Committed r268358: <https://trac.webkit.org/changeset/268358>

All reviewed patches have been landed. Closing bug and clearing flags on attachment 411106 [details].