Bug 158639

Summary: [Yosemite Release WK2] imported/blink/storage/indexeddb/blob-delete-objectstore-db.html is a flaky timeout
Product: WebKit Reporter: Ryan Haddad <ryanhaddad>
Component: New BugsAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: beidson
Priority: P2    
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
See Also: https://bugs.webkit.org/show_bug.cgi?id=158640
https://bugs.webkit.org/show_bug.cgi?id=159677
Bug Depends on:    
Bug Blocks: 154968    

Description Ryan Haddad 2016-06-10 16:24:41 PDT
imported/blink/storage/indexeddb/blob-delete-objectstore-db.html is a flaky timeout

Most recent timeout:
<https://build.webkit.org/builders/Apple%20Yosemite%20Release%20WK2%20(Tests)/builds/15230.

Flakiness dashboard:
<https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&tests=imported%2Fblink%2Fstorage%2Findexeddb%2Fblob-delete-objectstore-db.html>

--- /Volumes/Data/slave/yosemite-release-tests-wk2/build/layout-test-results/imported/blink/storage/indexeddb/blob-delete-objectstore-db-expected.txt
+++ /Volumes/Data/slave/yosemite-release-tests-wk2/build/layout-test-results/imported/blink/storage/indexeddb/blob-delete-objectstore-db-actual.txt
@@ -1,30 +1,2 @@
-Test that deleting an object store and a database containing blobs doesn't crash.
+FAIL: Timed out waiting for notifyDone to be called
 
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-dbname = "blob-delete-objectstore-db.html"
-indexedDB.deleteDatabase(dbname)
-indexedDB.open(dbname, 1)
-store0 = db.createObjectStore('store0')
-store1 = db.createObjectStore('store1')
-store0.put(blobA, key)
-db.close()
-
-reopen():
-request = indexedDB.open(dbname, 2)
-
-deleteObjectStore():
-db.deleteObjectStore('store0')
-
-didDeleteObjectStore():
-trans = db.transaction('store1', 'readwrite')
-store1 = trans.objectStore('store1')
-store1.put(blobB, key)
-db.close()
-request = indexedDB.deleteDatabase(dbname)
-Database deleted.
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
Comment 1 Ryan Haddad 2016-06-10 16:29:02 PDT
Per the flakiness dashboard, this was the first timeout @ r201541, but I'm not sure the change is directly related.

https://build.webkit.org/builders/Apple%20Yosemite%20Release%20WK2%20(Tests)/builds/14945
Comment 2 Brady Eidson 2016-07-04 14:47:40 PDT
This has been mostly fine for QUITE awhile on the Mac ports where it's expected to be fine.

The LONE exception is a crash on Yosemite debug wk2 a few builds ago.

Trying to get the stack trace from the results dashboard is not working.
Comment 3 Brady Eidson 2016-07-04 14:51:23 PDT
NM, here:

https://build.webkit.org/results/Apple Yosemite Debug WK2 (Tests)/r202806 (13221)/imported/blink/storage/indexeddb/blob-delete-objectstore-db-crash-log.txt

Thread 2 Crashed:: IndexedDatabase Server
0   com.apple.JavaScriptCore      	0x000000011258acd7 WTFCrash + 39
1   com.apple.WebCore             	0x0000000116d0be4c WebCore::TimerBase::stop() + 76
2   com.apple.WebCore             	0x0000000116d0bda9 WebCore::TimerBase::~TimerBase() + 41
3   com.apple.WebCore             	0x0000000114906a91 WebCore::Timer::~Timer() + 65
4   com.apple.WebCore             	0x0000000114906a25 WebCore::Timer::~Timer() + 21
5   com.apple.WebCore             	0x0000000116d2f51e WebCore::IDBServer::UniqueIDBDatabase::~UniqueIDBDatabase() + 1038
6   com.apple.WebCore             	0x0000000116d2fa45 WebCore::IDBServer::UniqueIDBDatabase::~UniqueIDBDatabase() + 21
7   com.apple.WebCore             	0x00000001156bf039 WTF::ThreadSafeRefCounted<WebCore::IDBServer::UniqueIDBDatabase>::deref() + 73
8   com.apple.WebCore             	0x00000001156befe0 WTF::Ref<WebCore::IDBServer::UniqueIDBDatabase>::~Ref() + 48
9   com.apple.WebCore             	0x00000001156bbda5 WTF::Ref<WebCore::IDBServer::UniqueIDBDatabase>::~Ref() + 21
10  com.apple.WebCore             	0x0000000116d3ba84 WebCore::IDBServer::UniqueIDBDatabase::executeNextDatabaseTask() + 660
11  com.apple.WebCore             	0x0000000116d71243 void WTF::callMemberFunctionForCrossThreadTaskImpl<WebCore::IDBServer::UniqueIDBDatabase, void (WebCore::IDBServer::UniqueIDBDatabase::*)(), std::__1::tuple<> >(WebCore::IDBServer::UniqueIDBDatabase*, void (WebCore::IDBServer::UniqueIDBDatabase::*)(), std::__1::tuple<>&&, std::__1::integer_sequence<unsigned long>) + 131
12  com.apple.WebCore             	0x0000000116d71199 void WTF::callMemberFunctionForCrossThreadTask<WebCore::IDBServer::UniqueIDBDatabase, void (WebCore::IDBServer::UniqueIDBDatabase::*)(), std::__1::tuple<>, std::__1::integer_sequence<unsigned long> >(WebCore::IDBServer::UniqueIDBDatabase*, void (WebCore::IDBServer::UniqueIDBDatabase::*)(), std::__1::tuple<>&&) + 73
13  com.apple.WebCore             	0x0000000116d71140 WTF::CrossThreadTask WTF::createCrossThreadTask<WebCore::IDBServer::UniqueIDBDatabase>(WebCore::IDBServer::UniqueIDBDatabase&, void (WebCore::IDBServer::UniqueIDBDatabase::*)())::'lambda'()::operator()() + 80
14  com.apple.WebCore             	0x0000000116d710bc WTF::Function<void ()>::CallableWrapper<WTF::CrossThreadTask WTF::createCrossThreadTask<WebCore::IDBServer::UniqueIDBDatabase>(WebCore::IDBServer::UniqueIDBDatabase&, void (WebCore::IDBServer::UniqueIDBDatabase::*)())::'lambda'()>::call() + 28
15  com.apple.WebCore             	0x0000000114920e23 WTF::Function<void ()>::operator()() const + 99
16  com.apple.WebCore             	0x000000011564e535 WTF::CrossThreadTask::performTask() + 21
17  com.apple.WebCore             	0x00000001156b9e7e WebCore::IDBServer::IDBServer::databaseRunLoop() + 174
18  com.apple.WebCore             	0x00000001156b7934 WebCore::IDBServer::IDBServer::databaseThreadEntry(void*) + 84
19  com.apple.JavaScriptCore      	0x00000001125f3c39 WTF::createThread(void (*)(void*), void*, char const*)::$_0::operator()() const + 25
20  com.apple.JavaScriptCore      	0x00000001125f3c0d void std::__1::__invoke_void_return_wrapper<void>::__call<WTF::createThread(void (*)(void*), void*, char const*)::$_0&>(WTF::createThread(void (*)(void*), void*, char const*)::$_0&&&) + 45
21  com.apple.JavaScriptCore      	0x00000001125f3bac std::__1::__function::__func<WTF::createThread(void (*)(void*), void*, char const*)::$_0, std::__1::allocator<WTF::createThread(void (*)(void*), void*, char const*)::$_0>, void ()>::operator()() + 44
22  com.apple.JavaScriptCore      	0x0000000111c2b48a std::__1::function<void ()>::operator()() const + 26
23  com.apple.JavaScriptCore      	0x00000001125f280e WTF::threadEntryPoint(void*) + 158
24  com.apple.JavaScriptCore      	0x00000001125f42b1 WTF::wtfThreadEntryPoint(void*) + 289
25  libsystem_pthread.dylib       	0x00007fff87cbb05a _pthread_body + 131
26  libsystem_pthread.dylib       	0x00007fff87cbafd7 _pthread_start + 176
27  libsystem_pthread.dylib       	0x00007fff87cb83ed thread_start + 13

The assert is *probably*:
    ASSERT(canAccessThreadLocalDataForThread(m_thread));

Which sucks, but is also likely a different issue than the flakiness previously seen here.
Comment 4 Brady Eidson 2016-07-12 10:06:07 PDT
This is not reproducing any longer.
Comment 5 Brady Eidson 2016-07-12 10:07:27 PDT
Filed https://bugs.webkit.org/show_bug.cgi?id=159677 for the UniqueIDBDatabase being torn down on the wrong thread.

Closing this bug.