Bug 229264

Summary: Leak of CMBufferQueueRef (up to 752 bytes each) in com.apple.WebKit.GPU.Development process
Product: WebKit Reporter: David Kilzer (:ddkilzer) <ddkilzer>
Component: MediaAssignee: David Kilzer (:ddkilzer) <ddkilzer>
Status: RESOLVED FIXED    
Severity: Normal CC: andersca, eric.carlson, ews-watchlist, glenn, jean-yves.avenard, jer.noble, philipj, sergio, simon.fraser, webkit-bug-importer, youennf
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on: 229265    
Bug Blocks:    
Attachments:
Description Flags
Patch v1 none

Description David Kilzer (:ddkilzer) 2021-08-18 17:08:35 PDT
Leak of CMBufferQueueRef (up to 752 bytes each) in com.apple.WebKit.GPU.Development process.

STACK OF 19 INSTANCES OF 'ROOT LEAK: <CMBufferQueue>':
27  dyld                                  0x117d7a4d5 start + 421
26  WebKit                                0x113879a30 WebKit::XPCServiceMain(int, char const**) + 137  XPCServiceMain.mm:243
25  libxpc.dylib                       0x7ff81a3b9b32 xpc_main + 99
24  libxpc.dylib                       0x7ff81a3ba143 _xpc_objc_main + 825
23  com.apple.Foundation               0x7ff81b53f2b3 -[NSRunLoop(NSRunLoop) run] + 76
22  com.apple.Foundation               0x7ff81b4b4c6e -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 216
21  com.apple.CoreFoundation           0x7ff81a72e005 CFRunLoopRunSpecific + 567
20  com.apple.CoreFoundation           0x7ff81a72ea5b __CFRunLoopRun + 897
19  com.apple.CoreFoundation           0x7ff81a730036 __CFRunLoopDoSources0 + 242
18  com.apple.CoreFoundation           0x7ff81a7302bd __CFRunLoopDoSource0 + 180
17  com.apple.CoreFoundation           0x7ff81a730355 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
16  JavaScriptCore                        0x119b191c2 WTF::RunLoop::performWork(void*) + 34  RunLoopCF.cpp:47
15  JavaScriptCore                        0x119b188ef WTF::RunLoop::performWork() + 431  RunLoop.cpp:134
14  WebKit                                0x1136a3b55 IPC::Connection::dispatchOneIncomingMessage() + 169  Connection.cpp:1172
13  WebKit                                0x1136a3914 IPC::Connection::dispatchMessage(std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >) + 238  Connection.cpp:1105
12  WebKit                                0x113793e1b WebKit::GPUConnectionToWebProcess::didReceiveMessage(IPC::Connection&, IPC::Decoder&) + 455  GPUConnectionToWebProcessMessageReceiver.cpp:0
11  WebKit                                0x1137cbb92 WebKit::GPUConnectionToWebProcess::dispatchMessage(IPC::Connection&, IPC::Decoder&) + 266  GPUConnectionToWebProcess.cpp:654
10  WebKit                                0x1137b64a5 void IPC::handleMessageAsync<Messages::RemoteMediaRecorderManager::CreateRecorder, WebKit::RemoteMediaRecorderManager, void (WebKit::RemoteMediaRecorderManager::*)(WTF::ObjectIdentifier<WebKit::MediaRecorderIdentifierType>, bool, bool, WebCore::MediaRecorderPrivateOptions const&, WTF::CompletionHandler<void (std::__1::optional<WebCore::ExceptionData>&&, WTF::String&&, unsigned int, unsigned int)>&&)>(IPC::Connection&, IPC::Decoder&, WebKit::RemoteMediaRecorderManager*, void (WebKit::RemoteMediaRecorderManager::*)(WTF::ObjectIdentifier<WebKit::MediaRecorderIdentifierType>, bool, bool, WebCore::MediaRecorderPrivateOptions const&, WTF::CompletionHandler<void (std::__1::optional<WebCore::ExceptionData>&&, WTF::String&&, unsigned int, unsigned int)>&&)) + 175  HandleMessage.h:198
9   WebKit                                0x1137b9783 void IPC::callMemberFunctionImpl<WebKit::RemoteMediaRecorderManager, void (WebKit::RemoteMediaRecorderManager::*)(WTF::ObjectIdentifier<WebKit::MediaRecorderIdentifierType>, bool, bool, WebCore::MediaRecorderPrivateOptions const&, WTF::CompletionHandler<void (std::__1::optional<WebCore::ExceptionData>&&, WTF::String&&, unsigned int, unsigned int)>&&), void (std::__1::optional<WebCore::ExceptionData> const&, WTF::String const&, unsigned int const&, unsigned int const&), std::__1::tuple<WTF::ObjectIdentifier<WebKit::MediaRecorderIdentifierType>, bool, bool, WebCore::MediaRecorderPrivateOptions>, 0ul, 1ul, 2ul, 3ul>(WebKit::RemoteMediaRecorderManager*, void (WebKit::RemoteMediaRecorderManager::*)(WTF::ObjectIdentifier<WebKit::MediaRecorderIdentifierType>, bool, bool, WebCore::MediaRecorderPrivateOptions const&, WTF::CompletionHandler<void (std::__1::optional<WebCore::ExceptionData>&&, WTF::String&&, unsigned int, unsigned int)>&&), WTF::CompletionHandler<void (std::__1::optional<WebCore::ExceptionData> const&, WTF::String const&, unsigned int const&, unsigned int const&)>&&, std::__1::tuple<WTF::ObjectIdentifier<WebKit::MediaRecorderIdentifierType>, bool, bool, WebCore::MediaRecorderPrivateOptions>&&, std::__1::integer_sequence<unsigned long, 0ul, 1ul, 2ul, 3ul>) + 130  HandleMessage.h:57
8   WebKit                                0x11380e568 WebKit::RemoteMediaRecorderManager::createRecorder(WTF::ObjectIdentifier<WebKit::MediaRecorderIdentifierType>, bool, bool, WebCore::MediaRecorderPrivateOptions const&, WTF::CompletionHandler<void (std::__1::optional<WebCore::ExceptionData>&&, WTF::String&&, unsigned int, unsigned int)>&&) + 52  RemoteMediaRecorderManager.cpp:60
7   WebKit                                0x11380ded1 WebKit::RemoteMediaRecorder::create(WebKit::GPUConnectionToWebProcess&, WTF::ObjectIdentifier<WebKit::MediaRecorderIdentifierType>, bool, bool, WebCore::MediaRecorderPrivateOptions const&) + 49  RemoteMediaRecorder.cpp:48
6   WebCore                               0x11d1342fe WebCore::MediaRecorderPrivateWriter::create(bool, bool, WebCore::MediaRecorderPrivateOptions const&) + 62  MediaRecorderPrivateWriterCocoa.mm:99
5   WebCore                               0x11d1345d3 WebCore::MediaRecorderPrivateWriter::initialize(WebCore::MediaRecorderPrivateOptions const&) + 451  MediaRecorderPrivateWriterCocoa.mm:171
4   WebCore                               0x11d135d05 WebCore::VideoSampleBufferCompressor::create(WTF::String, void (*)(void*, opaqueCMBufferQueueTriggerToken*), void*) + 789  VideoSampleBufferCompressor.mm:56
3   WebCore                               0x11d137cf3 WebCore::VideoSampleBufferCompressor::initialize(void (*)(void*, opaqueCMBufferQueueTriggerToken*), void*) + 67  VideoSampleBufferCompressor.mm:79
2   com.apple.CoreMedia                0x7ff82344f350 figBufferQueueCreateWithCallbacksOrHandlers + 219
1   com.apple.CoreFoundation           0x7ff81a6b308f _CFRuntimeCreateInstance + 580
0   libsystem_malloc.dylib             0x7ff81a4a2ffd _malloc_zone_malloc + 249 
====
    172 (12.2K) << TOTAL >>
      ----
      10 (752 bytes) ROOT LEAK: <CMBufferQueue 0x7fb1d547b080> [272]
         3 (192 bytes) <CFDictionary 0x7fb1d553a2c0> [64]
            1 (64 bytes) <CFDictionary (Value Storage) 0x7fb1d750cd90> [64]
            1 (64 bytes) <CFDictionary (Weak Key Storage) 0x7fb1d751ff00> [64]
         3 (160 bytes) <CFSet 0x7fb1d541b370> [48]
            2 (112 bytes) <CFSet (Value Storage) 0x7fb1d540bc90> [32]
               1 (80 bytes) 0x7fb1d544e770 [80]
         2 (64 bytes) <NSMutableArray 0x7fb1d55a9870> [48]
            1 (16 bytes) <NSMutableArray (Storage) 0x7fb1d7519a90> [16]
         1 (64 bytes) <pthread_mutex_t 0x7fb1d5437910> [64]
      ----
      10 (752 bytes) ROOT LEAK: <CMBufferQueue 0x7fb1e2106890> [272]
         3 (192 bytes) <CFDictionary 0x7fb1d5481f30> [64]
            1 (64 bytes) <CFDictionary (Value Storage) 0x7fb1d5715220> [64]
            1 (64 bytes) <CFDictionary (Weak Key Storage) 0x7fb1d57178c0> [64]
         3 (160 bytes) <CFSet 0x7fb1e2106a20> [48]
            2 (112 bytes) <CFSet (Value Storage) 0x7fb1e2104f10> [32]
               1 (80 bytes) 0x7fb1e2106a50 [80]
         2 (64 bytes) <NSMutableArray 0x7fb1d540c700> [48]
            1 (16 bytes) <NSMutableArray (Storage) 0x7fb1d5738f50> [16]
         1 (64 bytes) <pthread_mutex_t 0x7fb1e21069e0> [64]
      ----
[...]
Comment 1 Radar WebKit Bug Importer 2021-08-18 17:09:00 PDT
<rdar://problem/82101153>
Comment 2 David Kilzer (:ddkilzer) 2021-08-18 17:12:16 PDT
Created attachment 435819 [details]
Patch v1
Comment 3 EWS 2021-08-18 21:04:29 PDT
Committed r281223 (240660@main): <https://commits.webkit.org/240660@main>

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