RESOLVED FIXED 140867
[Win] Accessibility Layout tests accessing content while layout is in-process
https://bugs.webkit.org/show_bug.cgi?id=140867
Summary [Win] Accessibility Layout tests accessing content while layout is in-process
Brent Fulgham
Reported 2015-01-25 10:59:40 PST
The following layout test is failing on Windows in debug mode due to an assertion firing. accessibility/aria-labelledby-overrides-aria-label.html Probable cause: The following assertion is firing: // The render tree should be stable before going ahead. Otherwise, further uses of the // TextIterator will force a layout update, potentially altering the accessibility tree // and leading to crashes in the loop that computes the result text from the children. ASSERT(!document()->renderView()->layoutState()); ASSERT(!document()->childNeedsStyleRecalc());
Attachments
Brent Fulgham
Comment 1 2015-01-25 22:22:05 PST
Here is an example stack trace: WTF.dll!WTFCrash() Line 321 C++ > WebKit.dll!WebCore::AccessibilityNodeObject::textUnderElement(WebCore::AccessibilityTextUnderElementMode mode) Line 1666 C++ WebKit.dll!WebCore::AccessibilityRenderObject::textUnderElement(WebCore::AccessibilityTextUnderElementMode mode) Line 711 C++ WebKit.dll!WebCore::accessibleNameForNode(WebCore::Node * node, WebCore::Node * labelledbyNode) Line 1876 C++ WebKit.dll!WebCore::AccessibilityNodeObject::accessibilityDescriptionForElements(WTF::Vector<WebCore::Element *,0,WTF::CrashOnOverflow> & elements) Line 1895 C++ WebKit.dll!WebCore::AccessibilityNodeObject::ariaLabeledByAttribute() Line 1920 C++ WebKit.dll!WebCore::AccessibilityNodeObject::ariaAccessibilityDescription() Line 1173 C++ WebKit.dll!WebCore::AccessibilityNodeObject::accessibilityDescription() Line 1484 C++ WebKit.dll!WebCore::AccessibilityRenderObject::descriptionForMSAA() Line 3423 C++ WebKit.dll!AccessibleBase::get_accDescription(tagVARIANT vChild, wchar_t * * description) Line 432 C++ [External Code] DumpRenderTree.dll!AccessibilityUIElement::description() Line 348 C++ DumpRenderTree.dll!getDescriptionCallback(const OpaqueJSContext * context, OpaqueJSValue * thisObject, OpaqueJSString * propertyName, const OpaqueJSValue * * exception) Line 941 C++ JavaScriptCore.dll!JSC::JSCallbackObject<JSC::JSDestructibleObject>::getStaticValue(JSC::ExecState * exec, JSC::PropertyName propertyName) Line 575 C++ JavaScriptCore.dll!JSC::JSCallbackObject<JSC::JSDestructibleObject>::getOwnPropertySlot(JSC::JSObject * object, JSC::ExecState * exec, JSC::PropertyName propertyName, JSC::PropertySlot & slot) Line 172 C++ JavaScriptCore.dll!JSC::JSObject::fastGetOwnPropertySlot(JSC::ExecState * exec, JSC::VM & vm, JSC::Structure & structure, JSC::PropertyName propertyName, JSC::PropertySlot & slot) Line 1257 C++ JavaScriptCore.dll!JSC::JSObject::getPropertySlot(JSC::ExecState * exec, JSC::PropertyName propertyName, JSC::PropertySlot & slot) Line 1269 C++ JavaScriptCore.dll!JSC::JSValue::getPropertySlot(JSC::ExecState * exec, JSC::PropertyName propertyName, JSC::PropertySlot & slot) Line 702 C++ JavaScriptCore.dll!JSC::JSValue::get(JSC::ExecState * exec, JSC::PropertyName propertyName, JSC::PropertySlot & slot) Line 686 C++ JavaScriptCore.dll!llint_slow_path_get_by_id(JSC::ExecState * exec, JSC::Instruction * pc) Line 581 C++ JavaScriptCore.dll!llint_entry() Line 3120 Unknown JavaScriptCore.dll!vmEntryToJavaScript() Line 110 Unknown JavaScriptCore.dll!JSC::JITCode::execute(JSC::VM * vm, JSC::ProtoCallFrame * protoCallFrame) Line 77 C++ JavaScriptCore.dll!JSC::Interpreter::execute(JSC::ProgramExecutable * program, JSC::ExecState * callFrame, JSC::JSObject * thisObj) Line 914 C++ JavaScriptCore.dll!JSC::evaluate(JSC::ExecState * exec, const JSC::SourceCode & source, JSC::JSValue thisValue, JSC::JSValue * returnedException) Line 83 C++ WebKit.dll!WebCore::JSMainThreadExecState::evaluate(JSC::ExecState * exec, const JSC::SourceCode & source, JSC::JSValue thisValue, JSC::JSValue * exception) Line 62 C++ WebKit.dll!WebCore::ScriptController::evaluateInWorld(const WebCore::ScriptSourceCode & sourceCode, WebCore::DOMWrapperWorld & world) Line 151 C++ WebKit.dll!WebCore::ScriptController::evaluate(const WebCore::ScriptSourceCode & sourceCode) Line 167 C++ WebKit.dll!WebCore::ScriptElement::executeScript(const WebCore::ScriptSourceCode & sourceCode) Line 301 C++ WebKit.dll!WebCore::ScriptElement::prepareScript(const WTF::TextPosition & scriptStartPosition, WebCore::ScriptElement::LegacyTypeSupport supportLegacyTypes) Line 237 C++ WebKit.dll!WebCore::HTMLScriptRunner::runScript(WebCore::Element * script, const WTF::TextPosition & scriptStartPosition) Line 304 C++ WebKit.dll!WebCore::HTMLScriptRunner::execute(WTF::PassRefPtr<WebCore::Element> scriptElement, const WTF::TextPosition & scriptStartPosition) Line 177 C++ WebKit.dll!WebCore::HTMLDocumentParser::runScriptsForPausedTreeBuilder() Line 197 C++ WebKit.dll!WebCore::HTMLDocumentParser::canTakeNextToken(WebCore::HTMLDocumentParser::SynchronousMode mode, WebCore::PumpSession & session) Line 214 C++ WebKit.dll!WebCore::HTMLDocumentParser::pumpTokenizer(WebCore::HTMLDocumentParser::SynchronousMode mode) Line 259 C++ WebKit.dll!WebCore::HTMLDocumentParser::pumpTokenizerIfPossible(WebCore::HTMLDocumentParser::SynchronousMode mode) Line 167 C++ WebKit.dll!WebCore::HTMLDocumentParser::append(WTF::PassRefPtr<WTF::StringImpl> inputSource) Line 393 C++ WebKit.dll!WebCore::DecodedDataDocumentParser::appendBytes(WebCore::DocumentWriter & writer, const char * data, unsigned int length) Line 51 C++ WebKit.dll!WebCore::DocumentWriter::addData(const char * bytes, unsigned int length) Line 225 C++ WebKit.dll!WebCore::DocumentLoader::commitData(const char * bytes, unsigned int length) Line 846 C++ WebKit.dll!WebFrameLoaderClient::committedLoad(WebCore::DocumentLoader * loader, const char * data, int length) Line 700 C++ WebKit.dll!WebCore::DocumentLoader::commitLoad(const char * data, int length) Line 772 C++ WebKit.dll!WebCore::DocumentLoader::dataReceived(WebCore::CachedResource * resource, const char * data, int length) Line 894 C++ WebKit.dll!WebCore::CachedRawResource::notifyClientsDataWasReceived(const char * data, unsigned int length) Line 120 C++ WebKit.dll!WebCore::CachedRawResource::addDataBuffer(WebCore::SharedBuffer & data) Line 71 C++ WebKit.dll!WebCore::SubresourceLoader::didReceiveDataOrBuffer(const char * data, int length, WTF::PassRefPtr<WebCore::SharedBuffer> prpBuffer, __int64 encodedDataLength, WebCore::DataPayloadType dataPayloadType) Line 285 C++ WebKit.dll!WebCore::SubresourceLoader::didReceiveBuffer(WTF::PassRefPtr<WebCore::SharedBuffer> buffer, __int64 encodedDataLength, WebCore::DataPayloadType dataPayloadType) Line 266 C++ WebKit.dll!WebCore::ResourceLoader::didReceiveBuffer(WebCore::ResourceHandle * __formal, WTF::PassRefPtr<WebCore::SharedBuffer> buffer, int encodedDataLength) Line 498 C++ WebKit.dll!WebCore::SynchronousResourceHandleCFURLConnectionDelegate::didReceiveData(const __CFData * data, long originalLength) Line 168 C++ WebKit.dll!WebCore::ResourceHandleCFURLConnectionDelegate::didReceiveDataCallback(_CFURLConnection * __formal, const __CFData * data, long originalLength, const void * clientInfo) Line 83 C++ CFNetwork.dll!URLConnectionClient::_clientDidReceiveData(const __CFArray * dataArray, URLConnectionClient::ClientConnectionEventQueue * preQ) Line 1531 C++ CFNetwork.dll!URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload(XConnectionEventInfo<enum XClientEvent,XClientEventParams> * e, long count) Line 2250 C++ CFNetwork.dll!URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload(XConnectionEventInfo<enum XClientEvent,XClientEventParams> * e, long count) Line 2328 C++ CFNetwork.dll!XConnectionEventQueue<enum XClientEvent,XClientEventParams>::processAllEvents() Line 231 C++ CFNetwork.dll!URLConnectionClient::processEvents() Line 362 C++ CFNetwork.dll!MultiplexerSource::perform() Line 229 C++ CoreFoundation.dll!__CFRunLoopDoSources0(__CFRunLoop * rl, __CFRunLoopMode * rlm, unsigned char stopAfterHandle) Line 41844 C++ CoreFoundation.dll!__CFRunLoopRun(__CFRunLoop * rl, __CFRunLoopMode * rlm, double seconds, unsigned char stopAfterHandle, __CFRunLoopMode * previousMode) Line 42281 C++ CoreFoundation.dll!CFRunLoopRunSpecific(__CFRunLoop * rl, const __CFString * modeName, double seconds, unsigned char returnAfterSourceHandled) Line 42477 C++ CoreFoundation.dll!CFRunLoopRunInMode(const __CFString * modeName, double seconds, unsigned char returnAfterSourceHandled) Line 42511 C++ DumpRenderTree.dll!runTest(const std::basic_string<char,std::char_traits<char>,std::allocator<char> > & inputLine) Line 1129 C++ DumpRenderTree.dll!main(int argc, const char * * argv) Line 1479 C++ DumpRenderTree.dll!dllLauncherEntryPoint(int argc, const char * * argv) Line 1514 C++ DumpRenderTree.exe!main(int argc, const char * * argv) Line 239 C++ [External Code]
Brent Fulgham
Comment 2 2015-01-25 22:23:48 PST
Sometimes these crashes only happen when DRT is running a number of tests. This might imply that there is some retained state from earlier runs. Several of these assertions fire when the tests are run on their own. But there are a handful of others that don't seem to trigger unless they are run in sequence with other accessibility tests.
Radar WebKit Bug Importer
Comment 3 2015-01-26 18:18:28 PST
Andres Gonzalez
Comment 4 2022-06-09 07:12:53 PDT
This problem is no longer, so I removed the last [ Skip ] in win/TestExpectations in fix for https://bugs.webkit.org/show_bug.cgi?id=241240.
Note You need to log in before you can comment on or make changes to this bug.