Blob storage: Fix ChromeBlobStorageContext deleter to use DeleteOnIOThread
The original one-off deleter for ChromeBlobStorageContext attempts to delete |this| directly when not called on the IO thread and the IO thread isn't available. This causes problems with objects it owns since some objects require being deleted on the IO thread. This manifested in flaky tests like EmptyBlob and Bug84933Test which started failing in a flaky way when IndexedDBDispatcherHost (which holds a scoped_refptr<ChromeBlobStorageContext>) was moved from the IO thread to the IDB task runner. The flaky crashes looked like: [8496:100:0221/084948.427:FATAL:memory_dump_manager.cc(247)] Check failed: (*mdp_iter)->task_runner && (*mdp_iter)->task_runner->RunsTasksInCurrentSequence(). MemoryDumpProvider "BlobStorageContext" attempted to unregister itself in a racy way. Please file a crbug. Backtrace: base::debug::CollectStackTrace [0x00007FF6F62CCAA2+18] base::debug::StackTrace::StackTrace [0x00007FF6F62CC002+18] logging::LogMessage::~LogMessage [0x00007FF6F62E7885+101] base::trace_event::MemoryDumpManager::UnregisterDumpProviderInternal [0x00007FF6F634BC2B+827] storage::BlobStorageContext::~BlobStorageContext [0x00007FF6F61D7362+34] storage::BlobStorageContext::`scalar deleting destructor' [0x00007FF6F61DA8F0+16] content::ChromeBlobStorageContext::`scalar deleting destructor' [0x00007FF6F46EF4F8+40] content::IndexedDBDispatcherHost::~IndexedDBDispatcherHost [0x00007FF6F48FC6BE+382] content::IndexedDBDispatcherHost::`scalar deleting destructor' [0x00007FF6F48FDFA0+16] Remove the one-off deleter for ChromeBlobStorageContext in favor of DeleteOnIOThread which always tries to delete the object on the IO thread and, if the IO thread isn't available, gives up since that indicates a leak on shutdown, which is generally okay in circumstances like this. Bug: 717812, 934243, 934250 Change-Id: Ibfda4b0b8f17d3eeb95773bb2a75f0e9a16e84b5 Reviewed-on: https://chromium-review.googlesource.com/c/1481597Reviewed-by:Daniel Murphy <dmurph@chromium.org> Reviewed-by:
Marijn Kruisselbrink <mek@chromium.org> Commit-Queue: Chase Phillips <cmp@chromium.org> Cr-Commit-Position: refs/heads/master@{#634328}
Showing
Please register or sign in to comment