Bug 39331
| Summary: | Assertion failure in OriginQuotaManager.cpp | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Eric U. <ericu> |
| Component: | DOM | Assignee: | Nobody <webkit-unassigned> |
| Status: | RESOLVED CONFIGURATION CHANGED | ||
| Severity: | Normal | CC: | ahmad.saleem792, ap, beidson, dumi, rniwa, sihui_liu |
| Priority: | P2 | ||
| Version: | 528+ (Nightly build) | ||
| Hardware: | All | ||
| OS: | All | ||
Eric U.
ASSERTION FAILED: usageRecord
(/Users/ericu/four/src/third_party/WebKit/WebCore/storage/OriginQuotaManager.cpp:130 long long unsigned int WebCore::OriginQuotaManager::diskUsage(WebCore::SecurityOrigin*) const)
I suspect this is because, in DatabaseTracker::removeOpenDatabase, we call originQuotaManager().removeOrigin() without in any way locking out other threads from adding new databases under that origin. So we're removing the last database, we decide to remove the origin from the origin quota manager, and as we're doing so someone's adding a new one. Then that new one won't be properly tracked, since we've blown away the record, and we assert when we later try to remove it.
I think this is rare and probably not dangerous [I hit it once in over 3000 test runs while looking for another race condition], but I haven't proven that yet.
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Ahmad Saleem
This commit removed OriginQuotaManager.cpp - https://github.com/WebKit/WebKit/commit/c6bf27fbac929123c0ac6a6b6b6b836f6b3a76cb
Do we need to track this any further? Thanks!
Ryosuke Niwa
I'm pretty sure this bug is no longer relevant.