RewriteDB might crash with a DCHECK |
||
Issue descriptionI had this crash when I tried to reproduce https://crbug.com/916797 by creating 5MB of SessionStorage on example.com and deleting it with ClearBrowsingData: [160694:160717:0104/131130.525110:FATAL:thread_restrictions.cc(116)] Check failed: !g_base_sync_primitives_disallowed.Get().Get(). Waiting on a //base sync primitive is not allowed on this thread to prevent jank and deadlock. If waiting on a //base sync primitive is unavoidable, do it within the scope of a ScopedAllowBaseSyncPrimitives. If in a test, use ScopedAllowBaseSyncPrimitivesForTesting. #0 0x7fb562eb605f base::debug::StackTrace::StackTrace() #1 0x7fb562dd9b7a logging::LogMessage::~LogMessage() #2 0x7fb562e80716 base::internal::AssertBaseSyncPrimitivesAllowed() #3 0x7fb562e79f4a base::internal::ScopedBlockingCallWithBaseSyncPrimitives::ScopedBlockingCallWithBaseSyncPrimitives() #4 0x7fb562ec6a27 base::ConditionVariable::Wait() #5 0x7fb55e7d68f8 leveldb::DBImpl::~DBImpl() #6 0x7fb55e7d6c2e leveldb::DBImpl::~DBImpl() #7 0x7fb55e7d2eea leveldb_env::DBTracker::TrackedDBImpl::~TrackedDBImpl() #8 0x7fb55e7cff20 leveldb_env::RewriteDB() #9 0x7fb5610b15c6 leveldb::LevelDBDatabaseImpl::RewriteDB() #10 0x7fb55fd2ec39 leveldb::mojom::LevelDBDatabaseStubDispatch::AcceptWithResponder()
,
Jan 4
,
Jan 4
oh interesting - I wonder why sync primatives aren't allowed for that service? They should be, they need to be.
,
Jan 8
That's confusing me as well. db_impl.cc is using a mutex everywhere, so the leveldb service should have sync primitives allowed. Otherwise it would crash much more often. I can't reproduce the issue reliably. I just tried again and couldn't trigger any crash. |
||
►
Sign in to add a comment |
||
Comment 1 by dullweber@chromium.org
, Jan 4