Changeset 277108 in webkit


Ignore:
Timestamp:
May 6, 2021 12:24:44 PM (3 years ago)
Author:
Russell Epstein
Message:

Apply patch. rdar://problem/77619719

Location:
branches/safari-611.2.7.0-branch/Source/WebKit
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/safari-611.2.7.0-branch/Source/WebKit/ChangeLog

    r276917 r277108  
     12021-05-06  Russell Epstein  <repstein@apple.com>
     2
     3        Apply patch. rdar://problem/77619719
     4
     5    2021-05-06  Chris Dumez  <cdumez@apple.com>
     6
     7            Crash under IPC::Connection::dispatchMessageToWorkQueueReceiver()
     8            <rdar://77576143>
     9
     10            Reviewed by Alex Christensen.
     11
     12            When r274565 was merged to the safari-611-branch branch, its `ASSERT(connection.m_incomingMessagesMutex.isHeld())`
     13            did not hold there. Unlike trunk, the call-site (Connection::processIncomingMessage(std::unique_ptr<Decoder>)) does
     14            not hold the m_incomingMessagesMutex lock on the safari-611-branch branch. This leads to crashes due to lack of
     15            synchronization when accessing / modifying the m_incomingMessages Dequeue on the main thread and IPC thread in
     16            parallel. To address the issue on the safari-611-branch branch, we now grab the m_incomingMessagesMutex lock before
     17            modifying the m_incomingMessages Dequeue in Connection::SyncMessageState::processIncomingMessage().
     18
     19            No new tests, existing tests were crashing in debug already.
     20
     21            * Platform/IPC/Connection.cpp:
     22            (IPC::Connection::SyncMessageState::processIncomingMessage):
     23
    1242021-05-03  Russell Epstein  <repstein@apple.com>
    225
  • branches/safari-611.2.7.0-branch/Source/WebKit/Platform/IPC/Connection.cpp

    r276157 r277108  
    148148        auto locker = holdLock(m_mutex);
    149149        shouldDispatch = m_didScheduleDispatchMessagesWorkSet.add(&connection).isNewEntry;
    150         ASSERT(connection.m_incomingMessagesMutex.isHeld());
     150        auto incomingMessagesLocker = holdLock(connection.m_incomingMessagesMutex);
    151151        if (message->shouldMaintainOrderingWithAsyncMessages()) {
    152152            // This sync message should maintain ordering with async messages so we need to process the pending async messages first.
Note: See TracChangeset for help on using the changeset viewer.