sk_abort: SkRect.h: fatal error: ""!r.isEmpty()"" in GrAtlasTextBlob::appendGlyph

NEW
Unassigned

Status

()

Core
Graphics
P5
normal
2 years ago
9 months ago

People

(Reporter: truber, Unassigned)

Tracking

(Blocks: 1 bug, {assertion, testcase})

Trunk
x86_64
Mac OS X
assertion, testcase
Points:
---
Dependency tree / graph

Firefox Tracking Flags

(firefox52 affected)

Details

(Whiteboard: [gfx-noted])

Attachments

(2 attachments)

(Reporter)

Description

2 years ago
Created attachment 8794230 [details]
testcase

Attached testcase triggers a skia abort in mozilla-central revision 60cc643978c7 (debug).
(Reporter)

Comment 1

2 years ago
Created attachment 8794231 [details]
log.txt
(Reporter)

Comment 2

2 years ago
Assertion:

/builds/slave/m-cen-m64-d-000000000000000000/build/src/gfx/skia/skia/include/core/SkRect.h:744: fatal error: ""!r.isEmpty()""
Abort from sk_abort
Hit MOZ_CRASH() at /builds/slave/m-cen-m64-d-000000000000000000/build/src/memory/mozalloc/mozalloc_abort.cpp:33

Stacktrace:

0|0|libmozglue.dylib|mozalloc_abort(char const*)|hg:hg.mozilla.org/mozilla-central:memory/mozalloc/mozalloc_abort.cpp:60cc643978c7|33|0x0
0|1|XUL|sk_abort_no_print()|hg:hg.mozilla.org/mozilla-central:gfx/skia/skia/src/ports/SkMemory_mozalloc.cpp:60cc643978c7|16|0xc
0|2|XUL|GrAtlasTextBlob::appendGlyph(int, SkRect const&, unsigned int, GrBatchTextStrike*, GrGlyph*, GrFontScaler*, SkGlyph const&, float, float, float, bool)|hg:hg.mozilla.org/mozilla-central:gfx/skia/skia/include/core/SkRect.h:60cc643978c7|744|0x26
0|3|XUL|GrTextUtils::BmpAppendGlyph(GrAtlasTextBlob*, int, GrBatchFontCache*, GrBatchTextStrike**, SkGlyph const&, int, int, unsigned int, GrFontScaler*)|hg:hg.mozilla.org/mozilla-central:gfx/skia/skia/src/gpu/text/GrTextUtils.cpp:60cc643978c7|152|0x30
0|4|XUL|SkFindAndPlaceGlyph::GlyphFindAndPlaceSubpixel<GrTextUtils::DrawBmpPosText(GrAtlasTextBlob*, int, GrBatchFontCache*, SkSurfaceProps const&, SkPaint const&, unsigned int, SkPaint::FakeGamma, SkMatrix const&, char const*, unsigned long, float const*, int, SkPoint const&)::$_1, (SkPaint::Align)0, (SkAxisAlignment)1>::findAndPositionGlyph(char const**, SkPoint, (GrTextUtils::DrawBmpPosText&&)(GrAtlasTextBlob*, int, GrBatchFontCache*, SkSurfaceProps const&, SkPaint const&, unsigned int, SkPaint::FakeGamma, SkMatrix const&, char const*, unsigned long, float const*, int, SkPoint const&)::$_1)|hg:hg.mozilla.org/mozilla-central:gfx/skia/skia/src/gpu/text/GrTextUtils.cpp:60cc643978c7|112|0x24
0|5|XUL|GrTextUtils::DrawBmpPosText(GrAtlasTextBlob*, int, GrBatchFontCache*, SkSurfaceProps const&, SkPaint const&, unsigned int, SkPaint::FakeGamma, SkMatrix const&, char const*, unsigned long, float const*, int, SkPoint const&)|hg:hg.mozilla.org/mozilla-central:gfx/skia/skia/src/core/SkFindAndPlaceGlyph.h:60cc643978c7|685|0x17
0|6|XUL|GrAtlasTextContext::CreateDrawPosTextBlob(GrTextBlobCache*, GrBatchFontCache*, GrShaderCaps const&, GrPaint const&, SkPaint const&, SkPaint::FakeGamma, SkMatrix const&, SkSurfaceProps const&, char const*, unsigned long, float const*, int, SkPoint const&)|hg:hg.mozilla.org/mozilla-central:gfx/skia/skia/src/gpu/text/GrAtlasTextContext.cpp:60cc643978c7|310|0x31
0|7|XUL|GrAtlasTextContext::drawPosText(GrContext*, GrDrawContext*, GrClip const&, GrPaint const&, SkPaint const&, SkMatrix const&, SkSurfaceProps const&, char const*, unsigned long, float const*, int, SkPoint const&, SkIRect const&)|hg:hg.mozilla.org/mozilla-central:gfx/skia/skia/src/gpu/text/GrAtlasTextContext.cpp:60cc643978c7|358|0x4d
0|8|XUL|GrDrawContext::drawPosText(GrClip const&, GrPaint const&, SkPaint const&, SkMatrix const&, char const*, unsigned long, float const*, int, SkPoint const&, SkIRect const&)|hg:hg.mozilla.org/mozilla-central:gfx/skia/skia/src/gpu/GrDrawContext.cpp:60cc643978c7|146|0x3a
0|9|XUL|SkGpuDevice::drawPosText(SkDraw const&, void const*, unsigned long, float const*, int, SkPoint const&, SkPaint const&)|hg:hg.mozilla.org/mozilla-central:gfx/skia/skia/src/gpu/SkGpuDevice.cpp:60cc643978c7|1797|0x42
Depends on: 1305151
This is mostly caused by numerical precision being stressed, mainly just triggers some debug code to assert in Skia but otherwise doesn't have any harmful consequence, and is not otherwise easy to fix. Ideally we should handle this via the mechanism in bug 1305151 rather than trying to fix directly.
Has STR: --- → yes
Priority: -- → P5
Whiteboard: [gfx-noted]
Has Regression Range: --- → irrelevant
You need to log in before you can comment on or make changes to this bug.