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