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
<rdar://problem/58256926>
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.
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
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.