Changeset 277108 in webkit
- Timestamp:
- May 6, 2021 12:24:44 PM (3 years ago)
- 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 1 2021-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 1 24 2021-05-03 Russell Epstein <repstein@apple.com> 2 25 -
branches/safari-611.2.7.0-branch/Source/WebKit/Platform/IPC/Connection.cpp
r276157 r277108 148 148 auto locker = holdLock(m_mutex); 149 149 shouldDispatch = m_didScheduleDispatchMessagesWorkSet.add(&connection).isNewEntry; 150 ASSERT(connection.m_incomingMessagesMutex.isHeld());150 auto incomingMessagesLocker = holdLock(connection.m_incomingMessagesMutex); 151 151 if (message->shouldMaintainOrderingWithAsyncMessages()) { 152 152 // 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.