Bug 150678
Summary: | storage/indexeddb/modern tests crashing frequently on mac-wk1 | ||
---|---|---|---|
Product: | WebKit | Reporter: | Ryan Haddad <ryanhaddad> |
Component: | WebCore Misc. | Assignee: | Brady Eidson <beidson> |
Status: | RESOLVED FIXED | ||
Severity: | Normal | CC: | ap, beidson |
Priority: | P2 | ||
Version: | WebKit Nightly Build | ||
Hardware: | Mac | ||
OS: | Unspecified |
Ryan Haddad
storage/indexeddb/modern tests crashing frequently on mac-wk1
storage/indexeddb/modern/createobjectstore-basic.html
<http://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&tests=storage%2Findexeddb%2Fmodern%2Fcreateobjectstore-basic.html>
storage/indexeddb/modern/objectstore-attributes.html
<http://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&tests=storage%2Findexeddb%2Fmodern%2Fobjectstore-attributes.html>
storage/indexeddb/modern/transaction-scheduler-1.html
<https://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&tests=storage%2Findexeddb%2Fmodern%2Ftransaction-scheduler-1.html>
Attachments | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
Ryan Haddad
Marked as flaky in <http://trac.webkit.org/changeset/191733>
Ryan Haddad
*** Bug 150636 has been marked as a duplicate of this bug. ***
Ryan Haddad
Same for storage/indexeddb/modern/aborted-put.html
<http://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&tests=storage%2Findexeddb%2Fmodern%2Faborted-put.html>
Brady Eidson
I don't know how to navigate the "flakiness dashboard" to find an example of an actually test failure.
Combined with the fact that one of these URLs takes about a full minute to load... any chance I could see a URL direct to a failure instead?
Brady Eidson
This tool is pretty much unusable to me. I'm perfectly willing to just click around random links until I find what I'm looking for, but not if even link takes ~20second or more to load.
Brady Eidson
Managed to dig up stack traces using this tool.
stderr:
ASSERTION FAILED: rawTransaction
/Volumes/Data/slave/yosemite-debug/build/Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.cpp(120) : virtual WebCore::IDBError WebCore::IDBServer::MemoryIDBBackingStore::createObjectStore(const WebCore::IDBResourceIdentifier &, const WebCore::IDBObjectStoreInfo &)
1 0x105cce7c0 WTFCrash
2 0x10b8beaf7 WebCore::IDBServer::MemoryIDBBackingStore::createObjectStore(WebCore::IDBResourceIdentifier const&, WebCore::IDBObjectStoreInfo const&)
3 0x10c3502f7 WebCore::IDBServer::UniqueIDBDatabase::createObjectStore(WebCore::IDBServer::UniqueIDBDatabaseTransaction&, WebCore::IDBObjectStoreInfo const&, std::__1::function<void (WebCore::IDBError const&)>)
4 0x10c37c6c6 WebCore::IDBServer::UniqueIDBDatabaseTransaction::createObjectStore(WebCore::IDBRequestData const&, WebCore::IDBObjectStoreInfo const&)
5 0x10ae28746 WebCore::IDBServer::IDBServer::createObjectStore(WebCore::IDBRequestData const&, WebCore::IDBObjectStoreInfo const&)
6 0x10aeffb1e WebCore::InProcessIDBServer::createObjectStore(WebCore::IDBRequestData const&, WebCore::IDBObjectStoreInfo const&)::$_11::operator()() const
7 0x10aeffabc std::__1::__function::__func<WebCore::InProcessIDBServer::createObjectStore(WebCore::IDBRequestData const&, WebCore::IDBObjectStoreInfo const&)::$_11, std::__1::allocator<WebCore::InProcessIDBServer::createObjectStore(WebCore::IDBRequestData const&, WebCore::IDBObjectStoreInfo const&)::$_11>, void ()>::operator()()
8 0x10575963a std::__1::function<void ()>::operator()() const
9 0x105d16d42 WTF::RunLoop::performWork()
10 0x105d174c4 WTF::RunLoop::performWork(void*)
11 0x7fff8b2b5a01 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
12 0x7fff8b2a7b8d __CFRunLoopDoSources0
13 0x7fff8b2a71bf __CFRunLoopRun
14 0x7fff8b2a6bd8 CFRunLoopRunSpecific
15 0x104d8e115 runTest(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)
16 0x104d8c83a runTestingServerLoop()
17 0x104d8bdb0 dumpRenderTree(int, char const**)
18 0x104d8ea1d DumpRenderTreeMain(int, char const**)
19 0x104de5702 main
and
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 com.apple.JavaScriptCore 0x000000010a76d86a WTFCrash + 42 (Assertions.cpp:321)
1 com.apple.WebCore 0x0000000110710277 WebCore::IDBServer::MemoryIDBBackingStore::createObjectStore(WebCore::IDBResourceIdentifier const&, WebCore::IDBObjectStoreInfo const&) + 599 (MemoryIDBBackingStore.cpp:132)
2 com.apple.WebCore 0x0000000111156db7 WebCore::IDBServer::UniqueIDBDatabase::createObjectStore(WebCore::IDBServer::UniqueIDBDatabaseTransaction&, WebCore::IDBObjectStoreInfo const&, std::__1::function<void (WebCore::IDBError const&)>) + 439 (UniqueIDBDatabase.cpp:241)
3 com.apple.WebCore 0x000000011118da5a WebCore::IDBServer::UniqueIDBDatabaseTransaction::createObjectStore(WebCore::IDBRequestData const&, WebCore::IDBObjectStoreInfo const&) + 426 (UniqueIDBDatabaseTransaction.cpp:107)
4 com.apple.WebCore 0x000000010fc7b396 WebCore::IDBServer::IDBServer::createObjectStore(WebCore::IDBRequestData const&, WebCore::IDBObjectStoreInfo const&) + 198 (IDBServer.cpp:169)
5 com.apple.WebCore 0x000000010fd5b41e WebCore::InProcessIDBServer::createObjectStore(WebCore::IDBRequestData const&, WebCore::IDBObjectStoreInfo const&)::$_11::operator()() const + 78 (InProcessIDBServer.cpp:167)
6 com.apple.WebCore 0x000000010fd5b3bc std::__1::__function::__func<WebCore::InProcessIDBServer::createObjectStore(WebCore::IDBRequestData const&, WebCore::IDBObjectStoreInfo const&)::$_11, std::__1::allocator<WebCore::InProcessIDBServer::createObjectStore(WebCore::IDBRequestData const&, WebCore::IDBObjectStoreInfo const&)::$_11>, void ()>::operator()() + 60 (functional:1370)
7 com.apple.JavaScriptCore 0x000000010a1cf7ba std::__1::function<void ()>::operator()() const + 26 (functional:1755)
8 com.apple.JavaScriptCore 0x000000010a7b85e4 WTF::RunLoop::performWork() + 276 (RunLoop.cpp:105)
9 com.apple.JavaScriptCore 0x000000010a7b8d54 WTF::RunLoop::performWork(void*) + 36 (RunLoopCF.cpp:38)
Note in these backtraces the main thread is doing backing store stuff directly.
That was a terrible and accidental oversight that was an obvious thread-safety issue, race-condition issue, and was just fixed in https://trac.webkit.org/changeset/191758/trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp
Ryan Haddad
Sorry about the slow flakiness dashboard. I'll provide direct links next time. Removed flaky expectations in r191780