<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>140522</bug_id>
          
          <creation_ts>2015-01-15 15:50:26 -0800</creation_ts>
          <short_desc>[Win] Failure in &apos;mathml/opentype/munderover-layout-resize.html due to missing font data for glyph</short_desc>
          <delta_ts>2016-07-03 13:04:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>159386</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>fred.wang</cc>
    
    <cc>mmaxfield</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1061672</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-01-15 15:50:26 -0800</bug_when>
    <thetext>The layout test &apos;mathml/opentype/munderover-layout-resize.html&apos; crashes on Windows.

It is crashing because the font data for the glyph is a nullptr.

The stack trace is:

 	WebKit.dll!WebCore::SimpleFontData::isZeroWidthSpaceGlyph(unsigned short glyph) Line 163	C++
&gt;	WebKit.dll!WebCore::SimpleFontData::widthForGlyph(unsigned short glyph) Line 343	C++
 	WebKit.dll!WebCore::RenderMathMLOperator::advanceForGlyph(const WebCore::GlyphData &amp; data) Line 1347	C++
 	WebKit.dll!WebCore::RenderMathMLOperator::computePreferredLogicalWidths() Line 1359	C++
 	WebKit.dll!WebCore::RenderBox::maxPreferredLogicalWidth() Line 1011	C++
 	WebKit.dll!WebCore::RenderBox::computeLogicalWidthInRegionUsing(WebCore::SizeType widthType, WebCore::Length logicalWidth, WebCore::LayoutUnit availableLogicalWidth, const WebCore::RenderBlock * cb, WebCore::RenderRegion * region) Line 2430	C++
 	WebKit.dll!WebCore::RenderBox::computeLogicalWidthInRegion(WebCore::RenderBox::LogicalExtentComputedValues &amp; computedValues, WebCore::RenderRegion * region) Line 2340	C++
 	WebKit.dll!WebCore::RenderBox::updateLogicalWidth() Line 2277	C++
 	WebKit.dll!WebCore::RenderBlock::recomputeLogicalWidth() Line 993	C++
 	WebKit.dll!WebCore::RenderFlexibleBox::layoutBlock(bool relayoutChildren, WebCore::LayoutUnit __formal) Line 262	C++
 	WebKit.dll!WebCore::RenderBlock::layout() Line 945	C++
 	WebKit.dll!WebCore::RenderMathMLRow::layout() Line 75	C++
 	WebKit.dll!WebCore::RenderMathMLRow::layout() Line 75	C++
 	WebKit.dll!WebCore::RenderBlockFlow::layoutBlockChild(WebCore::RenderBox &amp; child, WebCore::RenderBlockFlow::MarginInfo &amp; marginInfo, WebCore::LayoutUnit &amp; previousFloatLogicalBottom, WebCore::LayoutUnit &amp; maxFloatLogicalBottom) Line 707	C++
 	WebKit.dll!WebCore::RenderBlockFlow::layoutBlockChildren(bool relayoutChildren, WebCore::LayoutUnit &amp; maxFloatLogicalBottom) Line 627	C++
 	WebKit.dll!WebCore::RenderBlockFlow::layoutBlock(bool relayoutChildren, WebCore::LayoutUnit pageLogicalHeight) Line 482	C++
 	WebKit.dll!WebCore::RenderBlock::layout() Line 945	C++
 	WebKit.dll!WebCore::RenderBlockFlow::layoutBlockChild(WebCore::RenderBox &amp; child, WebCore::RenderBlockFlow::MarginInfo &amp; marginInfo, WebCore::LayoutUnit &amp; previousFloatLogicalBottom, WebCore::LayoutUnit &amp; maxFloatLogicalBottom) Line 707	C++
 	WebKit.dll!WebCore::RenderBlockFlow::layoutBlockChildren(bool relayoutChildren, WebCore::LayoutUnit &amp; maxFloatLogicalBottom) Line 627	C++
 	WebKit.dll!WebCore::RenderBlockFlow::layoutBlock(bool relayoutChildren, WebCore::LayoutUnit pageLogicalHeight) Line 482	C++
 	WebKit.dll!WebCore::RenderBlock::layout() Line 945	C++
 	WebKit.dll!WebCore::RenderBlockFlow::layoutBlockChild(WebCore::RenderBox &amp; child, WebCore::RenderBlockFlow::MarginInfo &amp; marginInfo, WebCore::LayoutUnit &amp; previousFloatLogicalBottom, WebCore::LayoutUnit &amp; maxFloatLogicalBottom) Line 707	C++
 	WebKit.dll!WebCore::RenderBlockFlow::layoutBlockChildren(bool relayoutChildren, WebCore::LayoutUnit &amp; maxFloatLogicalBottom) Line 627	C++
 	WebKit.dll!WebCore::RenderBlockFlow::layoutBlock(bool relayoutChildren, WebCore::LayoutUnit pageLogicalHeight) Line 482	C++
 	WebKit.dll!WebCore::RenderBlock::layout() Line 945	C++
 	WebKit.dll!WebCore::RenderBlockFlow::layoutBlockChild(WebCore::RenderBox &amp; child, WebCore::RenderBlockFlow::MarginInfo &amp; marginInfo, WebCore::LayoutUnit &amp; previousFloatLogicalBottom, WebCore::LayoutUnit &amp; maxFloatLogicalBottom) Line 707	C++
 	WebKit.dll!WebCore::RenderBlockFlow::layoutBlockChildren(bool relayoutChildren, WebCore::LayoutUnit &amp; maxFloatLogicalBottom) Line 627	C++
 	WebKit.dll!WebCore::RenderBlockFlow::layoutBlock(bool relayoutChildren, WebCore::LayoutUnit pageLogicalHeight) Line 482	C++
 	WebKit.dll!WebCore::RenderBlock::layout() Line 945	C++
 	WebKit.dll!WebCore::RenderView::layoutContent(const WebCore::LayoutState &amp; state) Line 233	C++
 	WebKit.dll!WebCore::RenderView::layout() Line 359	C++
 	WebKit.dll!WebCore::FrameView::layout(bool allowSubtree) Line 1333	C++
 	WebKit.dll!WebCore::Document::updateLayout() Line 1841	C++
 	WebKit.dll!WebCore::Document::updateLayoutIgnorePendingStylesheets(WebCore::Document::RunPostLayoutTasks runPostLayoutTasks) Line 1874	C++
 	WebKit.dll!WebCore::Element::offsetWidth() Line 704	C++
 	WebKit.dll!WebCore::jsElementOffsetWidth(JSC::ExecState * exec, JSC::JSObject * slotBase, __int64 thisValue, JSC::PropertyName __formal) Line 654	C++
 	JavaScriptCore.dll!JSC::PropertySlot::getValue(JSC::ExecState * exec, JSC::PropertyName propertyName) Line 256	C++
 	JavaScriptCore.dll!JSC::JSValue::get(JSC::ExecState * exec, JSC::PropertyName propertyName, JSC::PropertySlot &amp; 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 3118	Unknown
 	JavaScriptCore.dll!vmEntryToJavaScript() Line 109	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 &amp; source, JSC::JSValue thisValue, JSC::JSValue * returnedException) Line 83	C++
 	WebKit.dll!WebCore::JSMainThreadExecState::evaluate(JSC::ExecState * exec, const JSC::SourceCode &amp; source, JSC::JSValue thisValue, JSC::JSValue * exception) Line 62	C++
 	WebKit.dll!WebCore::ScriptController::evaluateInWorld(const WebCore::ScriptSourceCode &amp; sourceCode, WebCore::DOMWrapperWorld &amp; world) Line 150	C++
 	WebKit.dll!WebCore::ScriptController::evaluate(const WebCore::ScriptSourceCode &amp; sourceCode) Line 166	C++
 	WebKit.dll!WebCore::ScriptElement::executeScript(const WebCore::ScriptSourceCode &amp; sourceCode) Line 301	C++
 	WebKit.dll!WebCore::ScriptElement::prepareScript(const WTF::TextPosition &amp; scriptStartPosition, WebCore::ScriptElement::LegacyTypeSupport supportLegacyTypes) Line 237	C++
 	WebKit.dll!WebCore::HTMLScriptRunner::runScript(WebCore::Element * script, const WTF::TextPosition &amp; scriptStartPosition) Line 304	C++
 	WebKit.dll!WebCore::HTMLScriptRunner::execute(WTF::PassRefPtr&lt;WebCore::Element&gt; scriptElement, const WTF::TextPosition &amp; scriptStartPosition) Line 177	C++
 	WebKit.dll!WebCore::HTMLDocumentParser::runScriptsForPausedTreeBuilder() Line 197	C++
 	WebKit.dll!WebCore::HTMLDocumentParser::canTakeNextToken(WebCore::HTMLDocumentParser::SynchronousMode mode, WebCore::PumpSession &amp; 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&lt;WTF::StringImpl&gt; inputSource) Line 393	C++
 	WebKit.dll!WebCore::DecodedDataDocumentParser::appendBytes(WebCore::DocumentWriter &amp; 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 &amp; data) Line 71	C++
 	WebKit.dll!WebCore::SubresourceLoader::didReceiveDataOrBuffer(const char * data, int length, WTF::PassRefPtr&lt;WebCore::SharedBuffer&gt; prpBuffer, __int64 encodedDataLength, WebCore::DataPayloadType dataPayloadType) Line 279	C++
 	WebKit.dll!WebCore::SubresourceLoader::didReceiveBuffer(WTF::PassRefPtr&lt;WebCore::SharedBuffer&gt; buffer, __int64 encodedDataLength, WebCore::DataPayloadType dataPayloadType) Line 260	C++
 	WebKit.dll!WebCore::ResourceLoader::didReceiveBuffer(WebCore::ResourceHandle * __formal, WTF::PassRefPtr&lt;WebCore::SharedBuffer&gt; 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&lt;enum XClientEvent,XClientEventParams&gt; * e, long count) Line 2250	C++
 	CFNetwork.dll!XConnectionEventQueue&lt;enum XClientEvent,XClientEventParams&gt;::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&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt; &gt; &amp; inputLine) Line 1120	C++
 	DumpRenderTree.dll!main(int argc, const char * * argv) Line 1476	C++
 	DumpRenderTree.dll!dllLauncherEntryPoint(int argc, const char * * argv) Line 1506	C++
 	DumpRenderTree.exe!main(int argc, const char * * argv) Line 239	C++
 	[External Code]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1174434</commentid>
    <comment_count>1</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-03-14 06:47:40 -0700</bug_when>
    <thetext>@Brent: do you still get a crash?

RenderMathMLOperator::advanceForGlyph (now) has some code to check that the font data for the glyph is not nullptr:

http://trac.webkit.org/browser/trunk/Source/WebCore/rendering/mathml/RenderMathMLOperator.cpp#L281</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207497</commentid>
    <comment_count>2</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-07-03 09:28:48 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/202788</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>