Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 5861503be1bb95bdda74e97ccca87420ab652cfb
      
https://github.com/WebKit/WebKit/commit/5861503be1bb95bdda74e97ccca87420ab652cfb
  Author: Claudio Saavedra <[email protected]>
  Date:   2026-03-13 (Fri, 13 Mar 2026)

  Changed paths:
    M Source/WebKit/NetworkProcess/storage/IDBStorageManager.cpp
    M Source/WebKit/NetworkProcess/storage/IDBStorageManager.h

  Log Message:
  -----------
  IDB: ASSERT(spaceCheckResult == SpaceCheckResult::Pass) failed in 
WebCore::IDBServer::UniqueIDBDatabase::abortTransaction()
https://bugs.webkit.org/show_bug.cgi?id=309780

Reviewed by Sihui Liu.

During destruction of the IDBStorageManager, transactions are aborted.
Because UniqueIDBDatabase::abortTransaction() is called without a
SpaceCheckResult, one is requested via a call to
UniqueIDBDatabaseManager::requestSpace(). But this is happening
while the OriginStorageManager that installs a lambda to perform
the space check is already being destructed, so the lambda
will default to call the completion handler with false.

This will cause the innermost call to UniqueIDBDatabase::abortTransaction()
to happen with SpaceCheckResult::Fail, hitting the assertion mentioned.
For details, refer to the stacktrace in the bug report.

We can track the IDBStorageManager closure so that when
requestSpace() is called, we can directly grant or deny the
request depending on the size requested.

* Source/WebKit/NetworkProcess/storage/IDBStorageManager.cpp:
(WebKit::IDBStorageManager::~IDBStorageManager):
(WebKit::IDBStorageManager::requestSpace):
* Source/WebKit/NetworkProcess/storage/IDBStorageManager.h:

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



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

Reply via email to