[webkit-changes] [WebKit/WebKit] 73c65f: Crash under Connection::enqueueIncomingMessage() d...

Chris Dumez noreply at github.com
Mon Aug 5 17:01:09 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 73c65f7bc1821f1f76b08a19fe11ebe54e833050
      https://github.com/WebKit/WebKit/commit/73c65f7bc1821f1f76b08a19fe11ebe54e833050
  Author: Chris Dumez <cdumez at apple.com>
  Date:   2024-08-05 (Mon, 05 Aug 2024)

  Changed paths:
    M Source/WebKit/Platform/IPC/Connection.cpp
    M Source/WebKit/Platform/IPC/Connection.h

  Log Message:
  -----------
  Crash under Connection::enqueueIncomingMessage() due to recursive locking
https://bugs.webkit.org/show_bug.cgi?id=277650
rdar://133167925

Reviewed by Per Arne Vollan.

enqueueIncomingMessage() is called while holding the m_incomingMessagesLock lock. Then it calls
dispatchToClient() in case of IPC message throttling and dispatchToClient() tries to acquire
the same lock, thus the recursive locking.

m_incomingMessagesLock used to be a WTF::Lock, which apparently didn’t mind recursive locking.
However, we’ve recently made the switch to unfair_lock for responsiveness reasons and it
asserts when recursive locking.

To address the issue, make sure we don't recursive lock anymore and add compiler annotations
to catch such logic bugs at compile time.

* Source/WebKit/Platform/IPC/Connection.cpp:
(IPC::Connection::enqueueIncomingMessage):
(IPC::Connection::dispatchToClient):
(IPC::Connection::dispatchToClientWithIncomingMessagesLock):
* Source/WebKit/Platform/IPC/Connection.h:

Canonical link: https://commits.webkit.org/281862@main



To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications


More information about the webkit-changes mailing list