Bug 150171 - ASSERTION FAILED: markFontData in FontCascade::emphasisMarkHeight
Summary: ASSERTION FAILED: markFontData in FontCascade::emphasisMarkHeight
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKitGTK (show other bugs)
Version: WebKit Local Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Nobody
URL:
Keywords: LayoutTestFailure
Depends on:
Blocks:
 
Reported: 2015-10-15 08:30 PDT by Carlos Garcia Campos
Modified: 2015-10-21 05:53 PDT (History)
9 users (show)

See Also:


Attachments
Patch (2.19 KB, patch)
2015-10-15 08:46 PDT, Carlos Garcia Campos
mmaxfield: review+
Details | Formatted Diff | Diff
Patch for landing (7.17 KB, patch)
2015-10-21 00:41 PDT, Carlos Garcia Campos
buildbot: commit-queue-
Details | Formatted Diff | Diff
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 Details
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 Details
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 Details
Try to fix the tests (7.33 KB, patch)
2015-10-21 02:59 PDT, Carlos Garcia Campos
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Carlos Garcia Campos 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]
Comment 1 Carlos Garcia Campos 2015-10-15 08:46:12 PDT
Created attachment 263161 [details]
Patch
Comment 2 Darin Adler 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.
Comment 3 Darin Adler 2015-10-18 16:25:53 PDT
Myles, can you review this?
Comment 4 Carlos Garcia Campos 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.
Comment 5 Myles C. Maxfield 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.
Comment 6 Carlos Garcia Campos 2015-10-21 00:41:57 PDT
Created attachment 263666 [details]
Patch for landing
Comment 7 Build Bot 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
Comment 8 Build Bot 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
Comment 9 Build Bot 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
Comment 10 Build Bot 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
Comment 11 Build Bot 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
Comment 12 Build Bot 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
Comment 13 Carlos Garcia Campos 2015-10-21 02:59:38 PDT
Created attachment 263671 [details]
Try to fix the tests

I assumed mark string was always 16 bit.
Comment 14 WebKit Commit Bot 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>
Comment 15 WebKit Commit Bot 2015-10-21 05:53:05 PDT
All reviewed patches have been landed.  Closing bug.