I just ran into this assert. WebKit was loading a twitter page and I quit it. It asserted when terminating. ASSERTION FAILED: isMainThread() /Volumes/Data/psolanki/sources/external/WebKit.git/Source/WebCore/storage/StorageTracker.cpp(416) : void WebCore::StorageTracker::deleteOrigin(WebCore::SecurityOrigin *) 1 WebCore::StorageTracker::deleteOrigin(WebCore::SecurityOrigin*) 2 WebCore::StorageTracker::deleteOrigin(WTF::String const&) 3 WebCore::StorageAreaSync::deleteEmptyDatabase() 4 WebCore::LocalStorageTask::performTask() 5 WebCore::LocalStorageThread::threadEntryPoint() 6 WebCore::LocalStorageThread::threadEntryPointCallback(void*) 7 WTF::threadEntryPoint(void*) 8 _pthread_start 9 thread_start Looking at the code, StorageAreaSync::deleteEmptyDatabase() asserts that it is not on the main thread. But then it calls deleteOrigin() that wants to be on the main thread.