Bug 182857

Summary: http/tests/security/http-0.9/xhr-blocked.html is flaky
Product: WebKit Reporter: Chris Dumez <cdumez>
Component: TextAssignee: Chris Dumez <cdumez>
Status: RESOLVED FIXED    
Severity: Normal CC: achristensen, ap, beidson, commit-queue, dbates, jlewis3, koivisto, mmaxfield, rniwa, ryanhaddad, webkit-bug-importer, youennf
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
See Also: https://bugs.webkit.org/show_bug.cgi?id=182848
Attachments:
Description Flags
Patch none

Description Chris Dumez 2018-02-15 19:33:04 PST
http/tests/security/http-0.9/xhr-blocked.html is flaky and causes EWS issues as in Bug 182848.

Crash looks like:
Thread 0:: Dispatch queue: com.apple.main-thread
0   com.apple.CoreFoundation      	0x00007fffc5dc1e5a CFEqual + 74
1   com.apple.WebCore             	0x0000000112793a69 WebCore::FontPlatformData::platformIsEqual(WebCore::FontPlatformData const&) const + 25 (FontPlatformDataCocoa.mm:68)
2   com.apple.WebCore             	0x00000001134c5420 WTF::HashTableAddResult<WTF::HashTableIterator<WebCore::FontPlatformData, WTF::KeyValuePair<WebCore::FontPlatformData, WTF::RefPtr<WebCore::Font, WTF::DumbPtrTraits<WebCore::Font> > >, WTF::KeyValuePairKeyExtractor<WTF::KeyValuePair<WebCore::FontPlatformData, WTF::RefPtr<WebCore::Font, WTF::DumbPtrTraits<WebCore::Font> > > >, WebCore::FontDataCacheKeyHash, WTF::HashMap<WebCore::FontPlatformData, WTF::RefPtr<WebCore::Font, WTF::DumbPtrTraits<WebCore::Font> >, WebCore::FontDataCacheKeyHash, WebCore::FontDataCacheKeyTraits, WTF::HashTraits<WTF::RefPtr<WebCore::Font, WTF::DumbPtrTraits<WebCore::Font> > > >::KeyValuePairTraits, WebCore::FontDataCacheKeyTraits> > WTF::HashMap<WebCore::FontPlatformData, WTF::RefPtr<WebCore::Font, WTF::DumbPtrTraits<WebCore::Font> >, WebCore::FontDataCacheKeyHash, WebCore::FontDataCacheKeyTraits, WTF::HashTraits<WTF::RefPtr<WebCore::Font, WTF::DumbPtrTraits<WebCore::Font> > > >::add<std::nullptr_t>(WebCore::FontPlatformData const&, std::nullptr_t&&) + 464 (FontPlatformData.h:174)
3   com.apple.WebCore             	0x00000001134c51c6 WebCore::FontCache::fontForPlatformData(WebCore::FontPlatformData const&) + 102 (FontCache.cpp:342)
4   com.apple.WebCore             	0x00000001134c5139 WebCore::FontCache::fontForFamily(WebCore::FontDescription const&, WTF::AtomicString const&, WebCore::FontTaggedSettings<int> const*, WebCore::FontVariantSettings const*, WebCore::FontSelectionSpecifiedCapabilities, bool) + 217 (utility:753)
5   com.apple.WebCore             	0x0000000112ebef4e WebCore::CSSFontSelector::fontRangesForFamily(WebCore::FontDescription const&, WTF::AtomicString const&) + 270 (CSSFontSelector.cpp:310)
6   com.apple.WebCore             	0x00000001134cd592 WebCore::realizeNextFallback(WebCore::FontCascadeDescription const&, unsigned int&, WebCore::FontSelector*) + 274 (FontCascadeFonts.cpp:150)
7   com.apple.WebCore             	0x00000001134cd204 WebCore::FontCascadeFonts::realizeFallbackRangesAt(WebCore::FontCascadeDescription const&, unsigned int) + 324 (Vector.h:815)
8   com.apple.WebCore             	0x00000001125102a9 WebCore::FontCascadeFonts::primaryFont(WebCore::FontCascadeDescription const&) + 57 (FontCascadeFonts.h:128)
9   com.apple.WebCore             	0x0000000112f295d4 WebCore::StyleResolver::StyleResolver(WebCore::Document&) + 1828 (StyleResolver.cpp:227)
10  com.apple.WebCore             	0x000000011383c2e3 WebCore::Style::Scope::resolver() + 99 (memory:2733)
11  com.apple.WebCore             	0x00000001138425c8 WebCore::Style::TreeResolver::resolve() + 280 (StyleTreeResolver.cpp:66)
12  com.apple.WebCore             	0x0000000112fccdab WebCore::Document::resolveStyle(WebCore::Document::ResolveStyleType) + 747 (memory:2722)
13  com.apple.WebCore             	0x0000000112fcd7f6 WebCore::Document::updateStyleIfNeeded() + 278 (Document.cpp:1971)
14  com.apple.WebCore             	0x000000011338b415 WebCore::DOMWindow::alert(WTF::String const&) + 101 (memory:2713)
15  com.apple.WebCore             	0x00000001127366d6 WebCore::jsDOMWindowInstanceFunctionAlert(JSC::ExecState*) + 342 (JSDOMWindow.cpp:28441)
16  ???                           	0x0000282489001185 0 + 44137382416773
17  com.apple.JavaScriptCore      	0x000000010f2b043d llint_entry + 29227 (LowLevelInterpreter.asm:798)
18  com.apple.JavaScriptCore      	0x000000010f2a902a vmEntryToJavaScript + 304 (LowLevelInterpreter64.asm:259)
19  com.apple.JavaScriptCore      	0x000000010f992613 JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*) + 147 (JITCode.cpp:82)
20  com.apple.JavaScriptCore      	0x000000010f95e291 JSC::Interpreter::executeProgram(JSC::SourceCode const&, JSC::ExecState*, JSC::JSObject*) + 11985 (Interpreter.cpp:969)
21  com.apple.JavaScriptCore      	0x000000010fb86717 JSC::evaluate(JSC::ExecState*, JSC::SourceCode const&, JSC::JSValue, WTF::NakedPtr<JSC::Exception>&) + 327 (Completion.cpp:103)
22  com.apple.WebCore             	0x0000000112dd43e0 WebCore::ScriptController::evaluateInWorld(WebCore::ScriptSourceCode const&, WebCore::DOMWrapperWorld&, WebCore::ExceptionDetails*) + 320 (JSMainThreadExecState.h:78)
23  com.apple.WebCore             	0x00000001130474f4 WebCore::ScriptElement::executeClassicScript(WebCore::ScriptSourceCode const&) + 548 (CurrentScriptIncrementer.h:52)
24  com.apple.WebCore             	0x0000000113045bfa WebCore::ScriptElement::prepareScript(WTF::TextPosition const&, WebCore::ScriptElement::LegacyTypeSupport) + 1194 (utility:753)
25  com.apple.WebCore             	0x0000000113223729 WebCore::HTMLScriptRunner::runScript(WebCore::ScriptElement&, WTF::TextPosition const&) + 89 (ScriptElement.h:62)
26  com.apple.WebCore             	0x0000000113223680 WebCore::HTMLScriptRunner::execute(WTF::Ref<WebCore::ScriptElement, WTF::DumbPtrTraits<WebCore::ScriptElement> >&&, WTF::TextPosition const&) + 48 (HTMLScriptRunner.cpp:154)
27  com.apple.WebCore             	0x000000011321870c WebCore::HTMLDocumentParser::runScriptsForPausedTreeBuilder() + 220 (Ref.h:60)
28  com.apple.WebCore             	0x00000001132189fb WebCore::HTMLDocumentParser::pumpTokenizerLoop(WebCore::HTMLDocumentParser::SynchronousMode, bool, WebCore::PumpSession&) + 683 (HTMLDocumentParser.cpp:233)
29  com.apple.WebCore             	0x0000000113218434 WebCore::HTMLDocumentParser::pumpTokenizer(WebCore::HTMLDocumentParser::SynchronousMode) + 116 (DocumentParser.h:69)
30  com.apple.WebCore             	0x0000000113218f64 WebCore::HTMLDocumentParser::append(WTF::RefPtr<WTF::StringImpl, WTF::DumbPtrTraits<WTF::StringImpl> >&&) + 484 (DocumentParser.h:70)
31  com.apple.WebCore             	0x0000000112fc279c WebCore::DecodedDataDocumentParser::flush(WebCore::DocumentWriter&) + 92 (utility:753)
32  com.apple.WebCore             	0x00000001132ef5ab WebCore::DocumentWriter::end() + 43 (RefPtr.h:82)
33  com.apple.WebCore             	0x00000001132dd763 WebCore::DocumentLoader::finishedLoading() + 451 (DocumentLoader.cpp:430)
34  com.apple.WebCore             	0x000000011335a12d WebCore::CachedResource::checkNotify() + 205 (Vector.h:689)
35  com.apple.WebCore             	0x0000000113357c29 WebCore::CachedRawResource::finishLoading(WebCore::SharedBuffer*) + 409 (CachedRawResource.cpp:118)
36  com.apple.WebCore             	0x000000011332e420 WebCore::SubresourceLoader::didFinishLoading(WebCore::NetworkLoadMetrics const&) + 1168 (ResourceLoader.h:162)
37  com.apple.WebCore             	0x00000001133269f0 WebCore::ResourceLoader::didFinishLoading(WebCore::ResourceHandle*) + 192 (NetworkLoadMetrics.h:48)
38  com.apple.WebCore             	0x00000001128d5fb6 WTF::Function<void ()>::CallableWrapper<-[WebCoreResourceHandleAsOperationQueueDelegate connectionDidFinishLoading:]::$_7>::call() + 70
39  com.apple.JavaScriptCore      	0x000000010fe4b5c0 WTF::dispatchFunctionsFromMainThread() + 176 (memory:2735)
40  com.apple.Foundation          	0x00007fffc78aa52a __NSThreadPerformPerform + 326
41  com.apple.CoreFoundation      	0x00007fffc5e4a3e1 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
42  com.apple.CoreFoundation      	0x00007fffc5e2b65c __CFRunLoopDoSources0 + 556
43  com.apple.CoreFoundation      	0x00007fffc5e2ab46 __CFRunLoopRun + 934
44  com.apple.CoreFoundation      	0x00007fffc5e2a544 CFRunLoopRunSpecific + 420
45  DumpRenderTree                	0x000000010f029ab5 runTest(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) + 2687 (DumpRenderTree.mm:1989)
46  DumpRenderTree                	0x000000010f028e47 dumpRenderTree(int, char const**) + 2956 (DumpRenderTree.mm:1156)
47  DumpRenderTree                	0x000000010f02a4b7 DumpRenderTreeMain(int, char const**) + 1454 (DumpRenderTree.mm:1369)
48  libdyld.dylib                 	0x00007fffdb9f3235 start + 1
Comment 1 Alexey Proskuryakov 2018-02-16 13:22:26 PST
The first instance of this on testers is with http://trac.webkit.org/r228545. I don't see any clear culprit.
Comment 2 Chris Dumez 2018-02-16 13:34:39 PST
I was wrong, this is the thread that crashed:
Thread 22 Crashed:: Dispatch queue: NSOperationQueue 0x7ff8e1817cc0 :: NSOperation 0x7ff8e1a5bc00 (QOS: DEFAULT)
0   com.apple.WebCore             	0x00000001128d05fc WTF::MessageQueue<WTF::Function<void ()> >::append(std::__1::unique_ptr<WTF::Function<void ()>, std::__1::default_delete<WTF::Function<void ()> > >) + 108 (memory:2250)
1   com.apple.WebCore             	0x00000001128d02fb -[WebCoreResourceHandleAsOperationQueueDelegate callFunctionOnMainThread:] + 75 (memory:2733)
2   com.apple.WebCore             	0x00000001128d1150 -[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveResponse:] + 224 (memory:2733)
3   com.apple.CFNetwork           	0x00007fffc4f89f27 __65-[NSURLConnectionInternal _withConnectionAndDelegate:onlyActive:]_block_invoke + 72
4   com.apple.Foundation          	0x00007fffc787cf19 __NSBLOCKOPERATION_IS_CALLING_OUT_TO_A_BLOCK__ + 7
5   com.apple.Foundation          	0x00007fffc787cbfc -[NSBlockOperation main] + 101
6   com.apple.Foundation          	0x00007fffc787b324 -[__NSOperationInternal _start:] + 672
7   com.apple.Foundation          	0x00007fffc78771db __NSOQSchedule_f + 201
8   libdispatch.dylib             	0x00007fffdb9bd8fc _dispatch_client_callout + 8
9   libdispatch.dylib             	0x00007fffdb9d39a0 _dispatch_queue_serial_drain + 896
10  libdispatch.dylib             	0x00007fffdb9c6306 _dispatch_queue_invoke + 1046
11  libdispatch.dylib             	0x00007fffdb9bf6b5 _dispatch_root_queue_drain + 476
12  libdispatch.dylib             	0x00007fffdb9bf48c _dispatch_worker_thread3 + 99
13  libsystem_pthread.dylib       	0x00007fffdbc0c5a2 _pthread_wqthread + 1299
14  libsystem_pthread.dylib       	0x00007fffdbc0c07d start_wqthread + 13
Comment 3 Radar WebKit Bug Importer 2018-02-16 13:41:53 PST
<rdar://problem/37616958>
Comment 4 Chris Dumez 2018-02-16 13:57:17 PST
Easy repo with:
Tools/Scripts/run-webkit-tests -gf --repeat-each=500 -1 http/tests/security/http-0.9/xhr-blocked.html
Comment 5 Chris Dumez 2018-02-16 14:01:46 PST
Created attachment 334066 [details]
Patch
Comment 6 Antti Koivisto 2018-02-16 15:01:15 PST
r=me
Comment 7 WebKit Commit Bot 2018-02-16 15:18:05 PST
Comment on attachment 334066 [details]
Patch

Clearing flags on attachment: 334066

Committed r228586: <https://trac.webkit.org/changeset/228586>
Comment 8 WebKit Commit Bot 2018-02-16 15:18:06 PST
All reviewed patches have been landed.  Closing bug.