RESOLVED FIXED 150171
ASSERTION FAILED: markFontData in FontCascade::emphasisMarkHeight
https://bugs.webkit.org/show_bug.cgi?id=150171
Summary ASSERTION FAILED: markFontData in FontCascade::emphasisMarkHeight
Carlos Garcia Campos
Reported 2015-10-15 08:30:35 PDT
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]
Attachments
Patch (2.19 KB, patch)
2015-10-15 08:46 PDT, Carlos Garcia Campos
mmaxfield: review+
Patch for landing (7.17 KB, patch)
2015-10-21 00:41 PDT, Carlos Garcia Campos
buildbot: commit-queue-
Archive of layout-test-results from ews102 for mac-mavericks (1004.68 KB, application/zip)
2015-10-21 01:19 PDT, Build Bot
no flags
Archive of layout-test-results from ews106 for mac-mavericks-wk2 (978.52 KB, application/zip)
2015-10-21 01:32 PDT, Build Bot
no flags
Archive of layout-test-results from ews112 for mac-yosemite (1.14 MB, application/zip)
2015-10-21 01:47 PDT, Build Bot
no flags
Try to fix the tests (7.33 KB, patch)
2015-10-21 02:59 PDT, Carlos Garcia Campos
no flags
Carlos Garcia Campos
Comment 1 2015-10-15 08:46:12 PDT
Darin Adler
Comment 2 2015-10-18 16:25:39 PDT
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.
Darin Adler
Comment 3 2015-10-18 16:25:53 PDT
Myles, can you review this?
Carlos Garcia Campos
Comment 4 2015-10-18 22:40:31 PDT
Ok, I used the GTK prefix because the assert seems to only happen in the GTK+ bots, I don't know why.
Myles C. Maxfield
Comment 5 2015-10-20 10:44:51 PDT
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.
Carlos Garcia Campos
Comment 6 2015-10-21 00:41:57 PDT
Created attachment 263666 [details] Patch for landing
Build Bot
Comment 7 2015-10-21 01:19:06 PDT
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
Build Bot
Comment 8 2015-10-21 01:19:12 PDT
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
Build Bot
Comment 9 2015-10-21 01:32:26 PDT
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
Build Bot
Comment 10 2015-10-21 01:32:31 PDT
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
Build Bot
Comment 11 2015-10-21 01:47:29 PDT
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
Build Bot
Comment 12 2015-10-21 01:47:34 PDT
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
Carlos Garcia Campos
Comment 13 2015-10-21 02:59:38 PDT
Created attachment 263671 [details] Try to fix the tests I assumed mark string was always 16 bit.
WebKit Commit Bot
Comment 14 2015-10-21 05:52:59 PDT
Comment on attachment 263671 [details] Try to fix the tests Clearing flags on attachment: 263671 Committed r191386: <http://trac.webkit.org/changeset/191386>
WebKit Commit Bot
Comment 15 2015-10-21 05:53:05 PDT
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.