Bug 205662 - REGRESSION (r253926): webgl/2.0.0/conformance2/renderbuffers/multisampled-renderbuffer-initialization.html is flaky
Summary: REGRESSION (r253926): webgl/2.0.0/conformance2/renderbuffers/multisampled-ren...
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebGL (show other bugs)
Version: WebKit Local Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2019-12-31 14:18 PST by Alexey Proskuryakov
Modified: 2020-02-04 17:22 PST (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Alexey Proskuryakov 2019-12-31 14:18:18 PST
webgl/2.0.0/conformance2/renderbuffers/multisampled-renderbuffer-initialization.html became a flaky failure on all Mac bots after switching to ANGLE.

https://results.webkit.org/?suite=layout-tests&test=webgl%2F2.0.0%2Fconformance2%2Frenderbuffers%2Fmultisampled-renderbuffer-initialization.html

FWIW, the story seems to be more subtle on internal bots, some of which saw the test flake in different ways prior to the switch, but it's a 100% clear regression in open source.

@@ -49,7 +49,7 @@
 [ 46: PASS ] gl.checkFramebufferStatus(gl.FRAMEBUFFER) is gl.FRAMEBUFFER_COMPLETE
 [ 47: PASS ] getError was expected value: NO_ERROR : should be no errors
 [ 48: PASS ] getError was expected value: NO_ERROR : should be no errors
-[ 49: PASS ] user buffer has been initialized to 0
+[ 49: FAIL ] user buffer has been initialized to 0 at (8, 0) expected: 0,0,0,0 was 255,255,255,255
 [ 50: PASS ] getError was expected value: NO_ERROR : should be no errors
 [ 51: PASS ] internal buffers have been initialized to 0
 [ 52: PASS ] getError was expected value: NO_ERROR : should be no error after framebufferRenderbuffer.
@@ -112,7 +112,7 @@
 [ 109: PASS ] gl.checkFramebufferStatus(gl.FRAMEBUFFER) is gl.FRAMEBUFFER_COMPLETE
 [ 110: PASS ] getError was expected value: NO_ERROR : should be no errors
 [ 111: PASS ] getError was expected value: NO_ERROR : should be no errors
-[ 112: PASS ] user buffer has been initialized to 0
+[ 112: FAIL ] user buffer has been initialized to 0 at (8, 0) expected: 0,0,0,0 was 255,255,255,255
 [ 113: PASS ] getError was expected value: NO_ERROR : should be no errors
 [ 114: PASS ] internal buffers have been initialized to 0
 [ 115: PASS ] getError was expected value: NO_ERROR : should be no error after framebufferRenderbuffer.
@@ -130,5 +130,5 @@
 [ 127: PASS ] clearColor is [0, 1, 0, 1]
 [ 128: PASS ] getError was expected value: NO_ERROR : should be no errors
 [ 129: PASS ] successfullyParsed is true
-[ FAIL ] 8 failures reported
+[ FAIL ] 10 failures reported
Comment 1 Radar WebKit Bug Importer 2019-12-31 14:18:35 PST
<rdar://problem/58256926>
Comment 2 Justin Fan 2020-02-04 16:49:26 PST
Interestingly, both iMac Pro and Mac mini 8,1 crashed every 274 iterations of this test, but the failure described by this bug does not reproduce.
Comment 3 Justin Fan 2020-02-04 16:51:18 PST
stack trace:

CRASHING TEST: webgl/2.0.0/conformance2/renderbuffers/multisampled-renderbuffer-initialization.html

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.JavaScriptCore      	0x000000020a0570de WTFCrash + 14 (Assertions.cpp:305)
1   com.apple.WebCore             	0x00000001f0009b9b WTFCrashWithInfo(int, char const*, char const*, int) + 27
2   com.apple.WebCore             	0x00000001f170d8b9 -[WebGLLayer allocateIOSurfaceBackingStoreWithSize:usingAlpha:] + 537 (WebGLLayer.mm:213)
3   com.apple.WebCore             	0x00000001f16ed4e8 WebCore::GraphicsContextGLOpenGL::allocateIOSurfaceBackingStore(WebCore::IntSize) + 152 (GraphicsContextGLOpenGLCocoa.mm:773)
4   com.apple.WebCore             	0x00000001f017f5e8 WebCore::GraphicsContextGLOpenGL::reshapeFBOs(WebCore::IntSize const&) + 952 (GraphicsContextGLANGLE.cpp:197)
5   com.apple.WebCore             	0x00000001f01810c0 WebCore::GraphicsContextGLOpenGL::reshape(int, int) + 368 (GraphicsContextGLANGLE.cpp:578)
6   com.apple.WebCore             	0x00000001f2c8d293 WebCore::WebGLRenderingContextBase::reshape(int, int) + 259 (WebGLRenderingContextBase.cpp:1078)
7   com.apple.WebCore             	0x00000001f2a44589 WebCore::HTMLCanvasElement::reset() + 681
8   com.apple.WebCore             	0x00000001f2a442bd WebCore::HTMLCanvasElement::parseAttribute(WebCore::QualifiedName const&, WTF::AtomString const&) + 125
9   com.apple.WebCore             	0x00000001f26d06f4 WebCore::Element::attributeChanged(WebCore::QualifiedName const&, WTF::AtomString const&, WTF::AtomString const&, WebCore::Element::AttributeModificationReason) + 1156 (Element.cpp:1791)
10  com.apple.WebCore             	0x00000001f282d57c WebCore::StyledElement::attributeChanged(WebCore::QualifiedName const&, WTF::AtomString const&, WTF::AtomString const&, WebCore::Element::AttributeModificationReason) + 236 (StyledElement.cpp:155)
11  com.apple.WebCore             	0x00000001f26dc966 WebCore::Element::didModifyAttribute(WebCore::QualifiedName const&, WTF::AtomString const&, WTF::AtomString const&) + 70 (Element.cpp:3960)
12  com.apple.WebCore             	0x00000001f26cfeec WebCore::Element::setAttributeInternal(unsigned int, WebCore::QualifiedName const&, WTF::AtomString const&, WebCore::Element::SynchronizationOfLazyAttribute) + 364 (Element.cpp:1741)
13  com.apple.WebCore             	0x00000001f26d01e5 WebCore::Element::setAttributeWithoutSynchronization(WebCore::QualifiedName const&, WTF::AtomString const&) + 117 (Element.cpp:1703)
14  com.apple.WebCore             	0x00000001f2a44abb WebCore::HTMLCanvasElement::setWidth(unsigned int) + 267 (HTMLCanvasElement.cpp:177)
15  com.apple.WebCore             	0x00000001f0a7ec7d WebCore::setJSHTMLCanvasElementWidthSetter(JSC::JSGlobalObject&, WebCore::JSHTMLCanvasElement&, JSC::JSValue, JSC::ThrowScope&)::'lambda'()::operator()() const + 61 (JSHTMLCanvasElement.cpp:241)
16  com.apple.WebCore             	0x00000001f0a7d1a1 std::__1::enable_if<!(std::is_same<void, decltype(fp1())>::value), void>::type WebCore::AttributeSetter::call<WebCore::setJSHTMLCanvasElementWidthSetter(JSC::JSGlobalObject&, WebCore::JSHTMLCanvasElement&, JSC::JSValue, JSC::ThrowScope&)::'lambda'()>(JSC::JSGlobalObject&, JSC::ThrowScope&, WebCore::setJSHTMLCanvasElementWidthSetter(JSC::JSGlobalObject&, WebCore::JSHTMLCanvasElement&, JSC::JSValue, JSC::ThrowScope&)::'lambda'()&&) + 33 (JSDOMAttribute.h:104)
17  com.apple.WebCore             	0x00000001f0a7d0e8 WebCore::setJSHTMLCanvasElementWidthSetter(JSC::JSGlobalObject&, WebCore::JSHTMLCanvasElement&, JSC::JSValue, JSC::ThrowScope&) + 520 (JSHTMLCanvasElement.cpp:243)
18  com.apple.WebCore             	0x00000001f09c8ce4 bool WebCore::IDLAttribute<WebCore::JSHTMLCanvasElement>::set<&(WebCore::setJSHTMLCanvasElementWidthSetter(JSC::JSGlobalObject&, WebCore::JSHTMLCanvasElement&, JSC::JSValue, JSC::ThrowScope&)), (WebCore::CastedThisErrorBehavior)0>(JSC::JSGlobalObject&, long long, long long, char const*) + 324 (JSDOMAttribute.h:50)
19  com.apple.WebCore             	0x00000001f09c8b8c WebCore::setJSHTMLCanvasElementWidth(JSC::JSGlobalObject*, long long, long long) + 44 (JSHTMLCanvasElement.cpp:248)
20  com.apple.JavaScriptCore      	0x000000020b5df14f JSC::callCustomSetter(JSC::JSGlobalObject*, bool (*)(JSC::JSGlobalObject*, long long, long long), bool, JSC::JSValue, JSC::JSValue) + 191 (CustomGetterSetter.cpp:41)
21  com.apple.JavaScriptCore      	0x000000020b5df223 JSC::callCustomSetter(JSC::JSGlobalObject*, JSC::JSValue, bool, JSC::JSObject*, JSC::JSValue, JSC::JSValue) + 163 (CustomGetterSetter.cpp:58)
22  com.apple.JavaScriptCore      	0x000000020b7480de JSC::JSObject::putInlineSlow(JSC::JSGlobalObject*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&) + 1566 (JSObject.cpp:824)
23  com.apple.JavaScriptCore      	0x000000020b747a6e JSC::JSObject::putInlineForJSObject(JSC::JSCell*, JSC::JSGlobalObject*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&) + 1262 (JSObjectInlines.h:263)
24  com.apple.JavaScriptCore      	0x000000020af52c28 JSC::JSCell::putInline(JSC::JSGlobalObject*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&) + 152 (JSCellInlines.h:413)
25  com.apple.JavaScriptCore      	0x000000020af54523 JSC::JSValue::putInline(JSC::JSGlobalObject*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&) + 163 (JSCJSValueInlines.h:996)
26  com.apple.JavaScriptCore      	0x000000020b37ef86 llint_slow_path_put_by_id + 806 (LLIntSlowPaths.cpp:845)
27  com.apple.JavaScriptCore      	0x000000020a52de1d llint_entry + 43183 (LowLevelInterpreter64.asm:348)
28  com.apple.JavaScriptCore      	0x000000020a540639 llint_entry + 118987 (LowLevelInterpreter.asm:1000)
29  com.apple.JavaScriptCore      	0x000000020a523303 vmEntryToJavaScript + 273 (LowLevelInterpreter64.asm:298)
30  com.apple.JavaScriptCore      	0x000000020b2734f7 JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*) + 199 (JITCodeInlines.h:38)
31  com.apple.JavaScriptCore      	0x000000020b272b7c JSC::Interpreter::executeProgram(JSC::SourceCode const&, JSC::JSGlobalObject*, JSC::JSObject*) + 6348 (Interpreter.cpp:851)
32  com.apple.JavaScriptCore      	0x000000020b5c6c3c JSC::evaluate(JSC::JSGlobalObject*, JSC::SourceCode const&, JSC::JSValue, WTF::NakedPtr<JSC::Exception>&) + 556 (Completion.cpp:146)
33  com.apple.JavaScriptCore      	0x000000020b5c6de8 JSC::profiledEvaluate(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::SourceCode const&, JSC::JSValue, WTF::NakedPtr<JSC::Exception>&) + 72 (Completion.cpp:161)
34  com.apple.WebCore             	0x00000001f21882d8 WebCore::JSExecState::profiledEvaluate(JSC::JSGlobalObject*, JSC::ProfilingReason, JSC::SourceCode const&, JSC::JSValue, WTF::NakedPtr<JSC::Exception>&) + 72 (JSExecState.h:79)
35  com.apple.WebCore             	0x00000001f2187f17 WebCore::ScriptController::evaluateInWorld(WebCore::ScriptSourceCode const&, WebCore::DOMWrapperWorld&) + 359 (ScriptController.cpp:144)
36  com.apple.WebCore             	0x00000001f2187d69 WebCore::ScriptController::evaluateInWorldIgnoringException(WebCore::ScriptSourceCode const&, WebCore::DOMWrapperWorld&) + 41 (ScriptController.cpp:117)
37  com.apple.WebCore             	0x00000001f21885a5 WebCore::ScriptController::evaluateIgnoringException(WebCore::ScriptSourceCode const&) + 53 (ScriptController.cpp:164)
38  com.apple.WebCore             	0x00000001f27e4b7d WebCore::ScriptElement::executeClassicScript(WebCore::ScriptSourceCode const&) + 893 (ScriptElement.cpp:393)
39  com.apple.WebCore             	0x00000001f27e2dea WebCore::ScriptElement::prepareScript(WTF::TextPosition const&, WebCore::ScriptElement::LegacyTypeSupport) + 2602 (ScriptElement.cpp:268)
40  com.apple.WebCore             	0x00000001f2cf34df WebCore::HTMLScriptRunner::runScript(WebCore::ScriptElement&, WTF::TextPosition const&) + 383 (HTMLScriptRunner.cpp:252)
41  com.apple.WebCore             	0x00000001f2cf32df WebCore::HTMLScriptRunner::execute(WTF::Ref<WebCore::ScriptElement, WTF::DumbPtrTraits<WebCore::ScriptElement> >&&, WTF::TextPosition const&) + 79 (HTMLScriptRunner.cpp:140)
42  com.apple.WebCore             	0x00000001f2cd810a WebCore::HTMLDocumentParser::runScriptsForPausedTreeBuilder() + 922 (HTMLDocumentParser.cpp:236)
43  com.apple.WebCore             	0x00000001f2cd856d WebCore::HTMLDocumentParser::pumpTokenizerLoop(WebCore::HTMLDocumentParser::SynchronousMode, bool, WebCore::PumpSession&) + 141 (HTMLDocumentParser.cpp:255)
44  com.apple.WebCore             	0x00000001f2cd7914 WebCore::HTMLDocumentParser::pumpTokenizer(WebCore::HTMLDocumentParser::SynchronousMode) + 468 (HTMLDocumentParser.cpp:305)
45  com.apple.WebCore             	0x00000001f2cd729d WebCore::HTMLDocumentParser::pumpTokenizerIfPossible(WebCore::HTMLDocumentParser::SynchronousMode) + 205 (HTMLDocumentParser.cpp:189)
46  com.apple.WebCore             	0x00000001f2cd927c WebCore::HTMLDocumentParser::append(WTF::RefPtr<WTF::StringImpl, WTF::DumbPtrTraits<WTF::StringImpl> >&&) + 556 (HTMLDocumentParser.cpp:419)
47  com.apple.WebCore             	0x00000001f25fb76e WebCore::DecodedDataDocumentParser::appendBytes(WebCore::DocumentWriter&, char const*, unsigned long) + 158 (DecodedDataDocumentParser.cpp:50)
48  com.apple.WebCore             	0x00000001f30488d5 WebCore::DocumentWriter::addData(char const*, unsigned long) + 357 (DocumentWriter.cpp:258)
49  com.apple.WebCore             	0x00000001f3042a58 WebCore::DocumentLoader::commitData(char const*, unsigned long) + 2632
50  com.apple.WebKit              	0x000000010c4ff2df WebKit::WebFrameLoaderClient::committedLoad(WebCore::DocumentLoader*, char const*, int) + 79
51  com.apple.WebCore             	0x00000001f304755a WebCore::DocumentLoader::commitLoad(char const*, int) + 202 (DocumentLoader.cpp:1021)
52  com.apple.WebCore             	0x00000001f3047485 WebCore::DocumentLoader::dataReceived(char const*, int) + 565 (DocumentLoader.cpp:1168)
53  com.apple.WebCore             	0x00000001f3048976 WebCore::DocumentLoader::dataReceived(WebCore::CachedResource&, char const*, int) + 150 (DocumentLoader.cpp:1141)
54  com.apple.WebCore             	0x00000001f318e4dc WebCore::CachedRawResource::notifyClientsDataWasReceived(char const*, unsigned int) + 140 (CachedRawResource.cpp:135)
55  com.apple.WebCore             	0x00000001f318e32b WebCore::CachedRawResource::updateBuffer(WebCore::SharedBuffer&) + 331 (CachedRawResource.cpp:74)
56  com.apple.WebCore             	0x00000001f3123942 WebCore::SubresourceLoader::didReceiveDataOrBuffer(char const*, int, WTF::RefPtr<WebCore::SharedBuffer, WTF::DumbPtrTraits<WebCore::SharedBuffer> >&&, long long, WebCore::DataPayloadType) + 674 (SubresourceLoader.cpp:519)
57  com.apple.WebCore             	0x00000001f3123691 WebCore::SubresourceLoader::didReceiveData(char const*, unsigned int, long long, WebCore::DataPayloadType) + 97 (SubresourceLoader.cpp:487)
58  com.apple.WebKit              	0x000000010c3fb024 WebKit::WebResourceLoader::didReceiveData(IPC::DataReference const&, long long) + 996
59  com.apple.WebKit              	0x000000010c9f04c3 void IPC::callMemberFunctionImpl<WebKit::WebResourceLoader, void (WebKit::WebResourceLoader::*)(IPC::DataReference const&, long long), std::__1::tuple<IPC::DataReference, long long>, 0ul, 1ul>(WebKit::WebResourceLoader*, void (WebKit::WebResourceLoader::*)(IPC::DataReference const&, long long), std::__1::tuple<IPC::DataReference, long long>&&, std::__1::integer_sequence<unsigned long, 0ul, 1ul>) + 179 (HandleMessage.h:42)
60  com.apple.WebKit              	0x000000010c9f0400 void IPC::callMemberFunction<WebKit::WebResourceLoader, void (WebKit::WebResourceLoader::*)(IPC::DataReference const&, long long), std::__1::tuple<IPC::DataReference, long long>, std::__1::integer_sequence<unsigned long, 0ul, 1ul> >(std::__1::tuple<IPC::DataReference, long long>&&, WebKit::WebResourceLoader*, void (WebKit::WebResourceLoader::*)(IPC::DataReference const&, long long)) + 112 (HandleMessage.h:48)
61  com.apple.WebKit              	0x000000010c9edf8e void IPC::handleMessage<Messages::WebResourceLoader::DidReceiveData, WebKit::WebResourceLoader, void (WebKit::WebResourceLoader::*)(IPC::DataReference const&, long long)>(IPC::Decoder&, WebKit::WebResourceLoader*, void (WebKit::WebResourceLoader::*)(IPC::DataReference const&, long long)) + 238 (HandleMessage.h:121)
62  com.apple.WebKit              	0x000000010c9ed680 WebKit::WebResourceLoader::didReceiveWebResourceLoaderMessage(IPC::Connection&, IPC::Decoder&) + 544 (WebResourceLoaderMessageReceiver.cpp:62)
63  com.apple.WebKit              	0x000000010c3ee786 WebKit::NetworkProcessConnection::didReceiveMessage(IPC::Connection&, IPC::Decoder&) + 166 (NetworkProcessConnection.cpp:89)
64  com.apple.WebKit              	0x000000010b1b5b49 IPC::Connection::dispatchMessage(IPC::Decoder&) + 473 (Connection.cpp:1009)
65  com.apple.WebKit              	0x000000010b1b64b1 IPC::Connection::dispatchMessage(std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >) + 577
66  com.apple.WebKit              	0x000000010b1b6b43 IPC::Connection::dispatchOneIncomingMessage() + 211 (Connection.cpp:1146)
67  com.apple.WebKit              	0x000000010b1d322b IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >)::$_7::operator()() + 91 (Connection.cpp:986)
68  com.apple.WebKit              	0x000000010b1d3149 WTF::Detail::CallableWrapper<IPC::Connection::enqueueIncomingMessage(std::__1::unique_ptr<IPC::Decoder, std::__1::default_delete<IPC::Decoder> >)::$_7, void>::call() + 25 (Function.h:52)
69  com.apple.JavaScriptCore      	0x000000020a07dc6a WTF::Function<void ()>::operator()() const + 138 (Function.h:84)
70  com.apple.JavaScriptCore      	0x000000020a0e8cd3 WTF::RunLoop::performWork() + 211 (RunLoop.cpp:108)
71  com.apple.JavaScriptCore      	0x000000020a0e970e WTF::RunLoop::performWork(void*) + 30 (RunLoopCF.cpp:39)
72  com.apple.CoreFoundation      	0x00007fff311efb21 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
73  com.apple.CoreFoundation      	0x00007fff311efac0 __CFRunLoopDoSource0 + 103
74  com.apple.CoreFoundation      	0x00007fff311ef8d4 __CFRunLoopDoSources0 + 209
75  com.apple.CoreFoundation      	0x00007fff311ee740 __CFRunLoopRun + 1272
76  com.apple.CoreFoundation      	0x00007fff311edbd3 CFRunLoopRunSpecific + 499
77  com.apple.Foundation          	0x00007fff33891188 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 212
78  com.apple.Foundation          	0x00007fff33944d6b -[NSRunLoop(NSRunLoop) run] + 76
79  libxpc.dylib                  	0x00007fff68a38191 _xpc_objc_main.cold.4 + 49
80  libxpc.dylib                  	0x00007fff68a380d7 _xpc_objc_main + 559
81  libxpc.dylib                  	0x00007fff68a37c0a xpc_main + 377
82  com.apple.WebKit              	0x000000010b95b55a WebKit::XPCServiceMain(int, char const**) + 1322 (XPCServiceMain.mm:160)
83  com.apple.WebKit              	0x000000010ca8b27b WKXPCServiceMain + 27 (WKMain.mm:33)
84  com.apple.WebKit.WebContent   	0x000000010b13beb2 main + 34 (AuxiliaryProcessMain.cpp:30)
85  libdyld.dylib                 	0x00007fff687ea7fd start + 1
Comment 4 Kenneth Russell 2020-02-04 17:22:39 PST
Does it seem likely that there is a resource leak? The only assertions in that function are:

    ASSERT(_contentsBuffer);
    ASSERT(_drawingBuffer);
    ASSERT(_spareBuffer);

which are calls to WebCore::IOSurface::create() - one of the calls is returning null.