[webkit-changes] [WebKit/WebKit] a45b3b: WebContent process stays in the isUnderMemoryPress...

bnham noreply at github.com
Thu Feb 22 13:13:34 PST 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: a45b3b20b1061b5faa7d063b15cfe93e24e7ee79
      https://github.com/WebKit/WebKit/commit/a45b3b20b1061b5faa7d063b15cfe93e24e7ee79
  Author: Ben Nham <nham at apple.com>
  Date:   2024-02-22 (Thu, 22 Feb 2024)

  Changed paths:
    M Source/WTF/wtf/MemoryPressureHandler.cpp
    M Source/WTF/wtf/MemoryPressureHandler.h
    M Source/WTF/wtf/cocoa/MemoryPressureHandlerCocoa.mm
    M Source/WTF/wtf/unix/MemoryPressureHandlerUnix.cpp
    M Source/WTF/wtf/win/MemoryPressureHandlerWin.cpp
    M Source/WebKit/WebProcess/WebProcess.cpp

  Log Message:
  -----------
  WebContent process stays in the isUnderMemoryPressure state forever after it breaches the PROC_LIMIT_CRITICAL threshold
https://bugs.webkit.org/show_bug.cgi?id=269859
rdar://118126701

Reviewed by Antti Koivisto.

After 244148 at main, a WebContent process that exceeds the PROC_LIMIT_CRITICAL threshold ends up in
the isUnderMemoryPressure state forever. This is because we were mutating the memory pressure state
instance variable when handling the process limit notification. Since the OS only notifies you when
you exceed the proc limit, but not when you go back under the proc limit, that state variable ended
up staying in the critical state forever. (This bug has occurred before, see r234646.)

To fix this, stop mutating the memory pressure state when the process limit notification fires, and
add a separate callback for handling process limit notifications.

* Source/WTF/wtf/MemoryPressureHandler.cpp:
(WTF::MemoryPressureHandler::setMemoryPressureStatus):
(WTF::MemoryPressureHandler::memoryPressureStatusChanged):
(WTF::MemoryPressureHandler::didExceedProcessMemoryLimit):
* Source/WTF/wtf/MemoryPressureHandler.h:
(WTF::MemoryPressureHandler::setMemoryPressureStatusChangedCallback):
(WTF::MemoryPressureHandler::setDidExceedProcessMemoryLimitCallback):
(WTF::MemoryPressureHandler::isUnderMemoryWarning const):
(WTF::MemoryPressureHandler::isUnderMemoryPressure const):
* Source/WTF/wtf/cocoa/MemoryPressureHandlerCocoa.mm:
(WTF::MemoryPressureHandler::install):
* Source/WTF/wtf/unix/MemoryPressureHandlerUnix.cpp:
(WTF::MemoryPressureHandler::triggerMemoryPressureEvent):
* Source/WTF/wtf/win/MemoryPressureHandlerWin.cpp:
(WTF::MemoryPressureHandler::windowsMeasurementTimerFired):
* Source/WebKit/WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess):

Canonical link: https://commits.webkit.org/275198@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