It happens with several tests like fast/ruby/text-emphasis.html in the Debug bot. The tests seem to pass in Release and the rendering out looks correct as well removing the assert. The thing is that for some reason we can get an empty GlyphData from FontCascade::getEmphasisMarkGlyphData() when it ends up falling back to system (FontCascadeFonts::glyphDataForSystemFallback). I'm not an expert in fonts, but maybe we can just return false from FontCascade::getEmphasisMarkGlyphData() when the GlyphData obtained is empty. STDERR: ASSERTION FAILED: markFontData STDERR: ../../Source/WebCore/platform/graphics/FontCascade.cpp(1274) : int WebCore::FontCascade::emphasisMarkHeight(const WTF::AtomicString&) const STDERR: 1 0x2af06474c3bf /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libjavascriptcoregtk-4.0.so.18(WTFCrash+0x1e) [0x2af06474c3bf] STDERR: 2 0x2af05de75382 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::FontCascade::emphasisMarkHeight(WTF::AtomicString const&) const+0x7e) [0x2af05de75382] STDERR: 3 0x2af05dfb7ece /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::InlineFlowBox::computeOverAnnotationAdjustment(WebCore::LayoutUnit) const+0x3fe) [0x2af05dfb7ece] STDERR: 4 0x2af05e1f2769 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RootInlineBox::beforeAnnotationsAdjustment() const+0x195) [0x2af05e1f2769] STDERR: 5 0x2af05e1f24f2 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RootInlineBox::alignBoxesInBlockDirection(WebCore::LayoutUnit, WTF::HashMap<WebCore::InlineTextBox const*, std::pair<WTF::Vector<WebCore::Font const*, 0ul, WTF::CrashOnOverflow, 16ul>, WebCore::GlyphOverflow>, WTF::PtrHash<WebCore::InlineTextBox const*>, WTF::HashTraits<WebCore::InlineTextBox const*>, WTF::HashTraits<std::pair<WTF::Vector<WebCore::Font const*, 0ul, WTF::CrashOnOverflow, 16ul>, WebCore::GlyphOverflow> > >&, WebCore::VerticalPositionCache&)+0x3cc) [0x2af05e1f24f2] STDERR: 6 0x2af05e01ab4f /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RenderBlockFlow::computeBlockDirectionPositionsForLine(WebCore::RootInlineBox*, WebCore::BidiRun*, WTF::HashMap<WebCore::InlineTextBox const*, std::pair<WTF::Vector<WebCore::Font const*, 0ul, WTF::CrashOnOverflow, 16ul>, WebCore::GlyphOverflow>, WTF::PtrHash<WebCore::InlineTextBox const*>, WTF::HashTraits<WebCore::InlineTextBox const*>, WTF::HashTraits<std::pair<WTF::Vector<WebCore::Font const*, 0ul, WTF::CrashOnOverflow, 16ul>, WebCore::GlyphOverflow> > >&, WebCore::VerticalPositionCache&)+0x3f) [0x2af05e01ab4f] STDERR: 7 0x2af05e01b542 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RenderBlockFlow::createLineBoxesFromBidiRuns(unsigned int, WebCore::BidiRunList<WebCore::BidiRun>&, WebCore::InlineIterator const&, WebCore::LineInfo&, WebCore::VerticalPositionCache&, WebCore::BidiRun*, WTF::Vector<WebCore::WordMeasurement, 64ul, WTF::CrashOnOverflow, 16ul>&)+0x164) [0x2af05e01b542] STDERR: 8 0x2af05e01c37e /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RenderBlockFlow::layoutRunsAndFloatsInRange(WebCore::LineLayoutState&, WebCore::BidiResolverWithIsolate<WebCore::InlineIterator, WebCore::BidiRun, WebCore::BidiIsolatedRun>&, WebCore::InlineIterator const&, WebCore::BidiStatus const&, unsigned int)+0x858) [0x2af05e01c37e] STDERR: 9 0x2af05e01baa1 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RenderBlockFlow::layoutRunsAndFloats(WebCore::LineLayoutState&, bool)+0x41f) [0x2af05e01baa1] STDERR: 10 0x2af05e01e1a9 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RenderBlockFlow::layoutLineBoxes(bool, WebCore::LayoutUnit&, WebCore::LayoutUnit&)+0x697) [0x2af05e01e1a9] STDERR: 11 0x2af05dffcead /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RenderBlockFlow::layoutInlineChildren(bool, WebCore::LayoutUnit&, WebCore::LayoutUnit&)+0xb7) [0x2af05dffcead] STDERR: 12 0x2af05dffc1ed /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RenderBlockFlow::layoutBlock(bool, WebCore::LayoutUnit)+0x3b7) [0x2af05dffc1ed] STDERR: 13 0x2af05dfd13c5 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RenderBlock::layout()+0x77) [0x2af05dfd13c5] STDERR: 14 0x2af05dffd26e /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RenderBlockFlow::layoutBlockChild(WebCore::RenderBox&, WebCore::RenderBlockFlow::MarginInfo&, WebCore::LayoutUnit&, WebCore::LayoutUnit&)+0x3be) [0x2af05dffd26e] STDERR: 15 0x2af05dffcdc8 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RenderBlockFlow::layoutBlockChildren(bool, WebCore::LayoutUnit&)+0x242) [0x2af05dffcdc8] STDERR: 16 0x2af05dffc211 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RenderBlockFlow::layoutBlock(bool, WebCore::LayoutUnit)+0x3db) [0x2af05dffc211] STDERR: 17 0x2af05dfd13c5 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RenderBlock::layout()+0x77) [0x2af05dfd13c5] STDERR: 18 0x2af05dffd26e /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RenderBlockFlow::layoutBlockChild(WebCore::RenderBox&, WebCore::RenderBlockFlow::MarginInfo&, WebCore::LayoutUnit&, WebCore::LayoutUnit&)+0x3be) [0x2af05dffd26e] STDERR: 19 0x2af05dffcdc8 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RenderBlockFlow::layoutBlockChildren(bool, WebCore::LayoutUnit&)+0x242) [0x2af05dffcdc8] STDERR: 20 0x2af05dffc211 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RenderBlockFlow::layoutBlock(bool, WebCore::LayoutUnit)+0x3db) [0x2af05dffc211] STDERR: 21 0x2af05dfd13c5 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RenderBlock::layout()+0x77) [0x2af05dfd13c5] STDERR: 22 0x2af05dffd26e /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RenderBlockFlow::layoutBlockChild(WebCore::RenderBox&, WebCore::RenderBlockFlow::MarginInfo&, WebCore::LayoutUnit&, WebCore::LayoutUnit&)+0x3be) [0x2af05dffd26e] STDERR: 23 0x2af05dffcdc8 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RenderBlockFlow::layoutBlockChildren(bool, WebCore::LayoutUnit&)+0x242) [0x2af05dffcdc8] STDERR: 24 0x2af05dffc211 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RenderBlockFlow::layoutBlock(bool, WebCore::LayoutUnit)+0x3db) [0x2af05dffc211] STDERR: 25 0x2af05dfd13c5 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RenderBlock::layout()+0x77) [0x2af05dfd13c5] STDERR: 26 0x2af05e1d686b /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RenderView::layoutContent(WebCore::LayoutState const&)+0x53) [0x2af05e1d686b] STDERR: 27 0x2af05e1d6f37 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::RenderView::layout()+0x3fd) [0x2af05e1d6f37] STDERR: 28 0x2af05dd1f695 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::FrameView::layout(bool)+0xe1f) [0x2af05dd1f695] STDERR: 29 0x2af05d6b0485 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::Document::implicitClose()+0x457) [0x2af05d6b0485] STDERR: 30 0x2af05dbc7f37 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::FrameLoader::checkCallImplicitClose()+0xa5) [0x2af05dbc7f37] STDERR: 31 0x2af05dbc7ca7 /home/slave/webkitgtk/gtk-linux-64-debug/build/WebKitBuild/Debug/lib/libwebkit2gtk-4.0.so.37(WebCore::FrameLoader::checkCompleted()+0x111) [0x2af05dbc7ca7]
Created attachment 263161 [details] Patch
Comment on attachment 263161 [details] Patch The prefix [GTK] should not be used on a patch that affects platform-independent code. Lets take that prefix off this.
Myles, can you review this?
Ok, I used the GTK prefix because the assert seems to only happen in the GTK+ bots, I don't know why.
Comment on attachment 263161 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=263161&action=review > Source/WebCore/platform/graphics/FontCascade.cpp:1236 > + return !glyphData.isEmpty(); This function should return an Optional(GlyphData) instead of using an out param. Also, the U16_* macros can be cleaned up. > Source/WebCore/platform/graphics/GlyphPage.h:53 > + bool isEmpty() const { return !glyph && !font; } Why don't you name this "invalid" or something? I'm not sure that "empty" is the best name.
Created attachment 263666 [details] Patch for landing
Comment on attachment 263666 [details] Patch for landing Attachment 263666 [details] did not pass mac-ews (mac): Output: http://webkit-queues.webkit.org/results/315071 New failing tests: fast/text/emphasis.html fast/text/emphasis-combined-text.html
Created attachment 263667 [details] Archive of layout-test-results from ews102 for mac-mavericks The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews102 Port: mac-mavericks Platform: Mac OS X 10.9.5
Comment on attachment 263666 [details] Patch for landing Attachment 263666 [details] did not pass mac-wk2-ews (mac-wk2): Output: http://webkit-queues.webkit.org/results/315094 New failing tests: fast/text/emphasis.html fast/text/emphasis-combined-text.html
Created attachment 263668 [details] Archive of layout-test-results from ews106 for mac-mavericks-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews106 Port: mac-mavericks-wk2 Platform: Mac OS X 10.9.5
Comment on attachment 263666 [details] Patch for landing Attachment 263666 [details] did not pass mac-debug-ews (mac): Output: http://webkit-queues.webkit.org/results/315102 New failing tests: fast/repaint/text-emphasis-h.html fast/text/emphasis.html fast/repaint/text-emphasis-v.html fast/text/emphasis-overlap.html fast/ruby/position-after.html fast/text/emphasis-avoid-ruby.html fast/text/emphasis-combined-text.html
Created attachment 263670 [details] Archive of layout-test-results from ews112 for mac-yosemite The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews112 Port: mac-yosemite Platform: Mac OS X 10.10.5
Created attachment 263671 [details] Try to fix the tests I assumed mark string was always 16 bit.
Comment on attachment 263671 [details] Try to fix the tests Clearing flags on attachment: 263671 Committed r191386: <http://trac.webkit.org/changeset/191386>
All reviewed patches have been landed. Closing bug.