Closed Bug 1503986 Opened 1 year ago Closed 1 year ago

src/gfx/skia/skia/src/core/SkWriteBuffer.cpp:238: fatal error: "assert(name)"

Categories

(Core :: Canvas: 2D, defect, P3)

defect

Tracking

()

RESOLVED FIXED
mozilla65
Tracking Status
firefox-esr60 --- unaffected
firefox63 --- unaffected
firefox64 --- unaffected
firefox65 --- fixed

People

(Reporter: tsmith, Assigned: lsalzman)

References

(Blocks 1 open bug)

Details

(Keywords: assertion, testcase)

Attachments

(2 files)

Attached file testcase.html
This assertion is triggered even with MOZ_SKIA_DISABLE_ASSERTS=1 set

Reduced with m-c:
BuildID=20181101133336
SourceStamp=182a1b088330a2d72310ae2561004d955571e236

src/gfx/skia/skia/src/core/SkWriteBuffer.cpp:238: fatal error: "assert(name)"

#0 SkBinaryWriteBuffer::writeFlattenable(SkFlattenable const*) src/gfx/skia/skia/src/core/SkWriteBuffer.cpp:252:17
#1 calculate_size_and_flatten(SkScalerContextRec const&, SkScalerContextEffects const&, SkBinaryWriteBuffer*) src/gfx/skia/skia/src/core/SkScalerContext.cpp:1134:50
#2 SkScalerContext::AutoDescriptorGivenRecAndEffects(SkScalerContextRec const&, SkScalerContextEffects const&, SkAutoDescriptor*) src/gfx/skia/skia/src/core/SkScalerContext.cpp:1166:15
#3 SkScalerContext::CreateDescriptorAndEffectsUsingPaint(SkPaint const&, SkSurfaceProps const*, SkScalerContextFlags, SkMatrix const*, SkAutoDescriptor*, SkScalerContextEffects*) src/gfx/skia/skia/src/core/SkScalerContext.cpp:1124:12
#4 SkStrikeCache::FindOrCreateStrikeExclusive(SkPaint const&, SkSurfaceProps const*, SkScalerContextFlags, SkMatrix const*) src/gfx/skia/skia/src/core/SkStrikeCache.cpp:154:17
#5 SkGlyphRunListPainter::drawForBitmapDevice(SkGlyphRunList const&, SkMatrix const&, std::function<std::function<void (SkMask const&, SkGlyph const&, SkPoint)> (SkPaint const&, SkArenaAlloc*)>, std::function<std::function<void (SkPath const*, SkGlyph const&, SkPoint)> (SkPaint const&, float, SkArenaAlloc*)>) src/gfx/skia/skia/src/core/SkGlyphRunPainter.cpp:222:26
#6 SkDraw::drawGlyphRunList(SkGlyphRunList const&, SkGlyphRunListPainter*) const src/gfx/skia/skia/src/core/SkDraw_text.cpp:139:19
#7 SkBitmapDevice::drawGlyphRunList(SkGlyphRunList const&) src/gfx/skia/skia/src/core/SkBitmapDevice.cpp:585:5
#8 SkCanvas::onDrawPosText(void const*, unsigned long, SkPoint const*, SkPaint const&) src/gfx/skia/skia/src/core/SkCanvas.cpp:2447:23
#9 SkCanvas::drawPosText(void const*, unsigned long, SkPoint const*, SkPaint const&) src/gfx/skia/skia/src/core/SkCanvas.cpp:2531:15
#10 mozilla::gfx::DrawTargetSkia::DrawGlyphs(mozilla::gfx::ScaledFont*, mozilla::gfx::GlyphBuffer const&, mozilla::gfx::Pattern const&, mozilla::gfx::StrokeOptions const*, mozilla::gfx::DrawOptions const&) src/gfx/2d/DrawTargetSkia.cpp:1476:12
#11 GlyphBufferAzure::DrawStroke(gfxContext::AzureState const&, mozilla::gfx::GlyphBuffer&) src/gfx/thebes/gfxFont.cpp:1860:13
#12 GlyphBufferAzure::FlushGlyphs() src/gfx/thebes/gfxFont.cpp:1836:13
#13 GlyphBufferAzure::~GlyphBufferAzure() src/gfx/thebes/gfxFont.cpp:1710:13
#14 gfxFont::Draw(gfxTextRun const*, unsigned int, unsigned int, mozilla::gfx::PointTyped<mozilla::gfx::UnknownUnits, float>*, TextRunDrawParams const&, mozilla::gfx::ShapedTextFlags) src/gfx/thebes/gfxFont.cpp:2446:5
#15 gfxTextRun::DrawGlyphs(gfxFont*, gfxTextRun::Range, mozilla::gfx::PointTyped<mozilla::gfx::UnknownUnits, float>*, gfxTextRun::PropertyProvider*, gfxTextRun::Range, TextRunDrawParams&, mozilla::gfx::ShapedTextFlags) const src/gfx/thebes/gfxTextRun.cpp:440:12
#16 gfxTextRun::Draw(gfxTextRun::Range, mozilla::gfx::PointTyped<mozilla::gfx::UnknownUnits, float>, gfxTextRun::DrawParams const&) const src/gfx/thebes/gfxTextRun.cpp:686:9
#17 mozilla::dom::CanvasBidiProcessor::DrawText(int, int) src/dom/canvas/CanvasRenderingContext2D.cpp:4190:15
#18 nsBidiPresUtils::ProcessText(char16_t const*, int, unsigned char, nsPresContext*, nsBidiPresUtils::BidiProcessor&, nsBidiPresUtils::Mode, nsBidiPositionResolve*, int, int*, nsBidi*) src/layout/base/nsBidiPresUtils.cpp:2183:20
#19 mozilla::dom::CanvasRenderingContext2D::DrawOrMeasureText(nsTSubstring<char16_t> const&, float, float, mozilla::dom::Optional<double> const&, mozilla::dom::CanvasRenderingContext2D::TextDrawOperation, float*) src/dom/canvas/CanvasRenderingContext2D.cpp:4460:8
#20 mozilla::dom::CanvasRenderingContext2D::StrokeText(nsTSubstring<char16_t> const&, double, double, mozilla::dom::Optional<double> const&, mozilla::ErrorResult&) src/dom/canvas/CanvasRenderingContext2D.cpp:3847:12
#21 mozilla::dom::CanvasRenderingContext2D_Binding::strokeText(JSContext*, JS::Handle<JSObject*>, mozilla::dom::CanvasRenderingContext2D*, JSJitMethodCallArgs const&) src/obj-firefox/dom/bindings/CanvasRenderingContext2DBinding.cpp:6073:9
#22 bool mozilla::dom::binding_detail::GenericMethod<mozilla::dom::binding_detail::NormalThisPolicy, mozilla::dom::binding_detail::ThrowExceptions>(JSContext*, unsigned int, JS::Value*) src/dom/bindings/BindingUtils.cpp:3320:13
#23 CallJSNative(JSContext*, bool (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) src/js/src/vm/Interpreter.cpp:468:15
#24 js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct) src/js/src/vm/Interpreter.cpp:560:16
#25 InternalCall(JSContext*, js::AnyInvokeArgs const&) src/js/src/vm/Interpreter.cpp:614:12
#26 Interpret(JSContext*, js::RunState&) src/js/src/vm/Interpreter.cpp:3462:18
#27 js::RunScript(JSContext*, js::RunState&) src/js/src/vm/Interpreter.cpp:447:12
#28 js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct) src/js/src/vm/Interpreter.cpp:587:15
#29 InternalCall(JSContext*, js::AnyInvokeArgs const&) src/js/src/vm/Interpreter.cpp:614:12
#30 js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>) src/js/src/vm/Interpreter.cpp:633:10
#31 JS::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::HandleValueArray const&, JS::MutableHandle<JS::Value>) src/js/src/jsapi.cpp:2975:12
#32 mozilla::dom::EventListener::HandleEvent(JSContext*, JS::Handle<JS::Value>, mozilla::dom::Event&, mozilla::ErrorResult&) src/obj-firefox/dom/bindings/EventListenerBinding.cpp:52:8
#33 void mozilla::dom::EventListener::HandleEvent<mozilla::dom::EventTarget*>(mozilla::dom::EventTarget* const&, mozilla::dom::Event&, mozilla::ErrorResult&, char const*, mozilla::dom::CallbackObject::ExceptionHandling, JS::Realm*) src/obj-firefox/dist/include/mozilla/dom/EventListenerBinding.h:66:12
#34 mozilla::EventListenerManager::HandleEventSubType(mozilla::EventListenerManager::Listener*, mozilla::dom::Event*, mozilla::dom::EventTarget*) src/dom/events/EventListenerManager.cpp:1104:9
#35 mozilla::EventListenerManager::HandleEventInternal(nsPresContext*, mozilla::WidgetEvent*, mozilla::dom::Event**, mozilla::dom::EventTarget*, nsEventStatus*, bool) src/dom/events/EventListenerManager.cpp:1309:15
#36 mozilla::EventTargetChainItem::HandleEvent(mozilla::EventChainPostVisitor&, mozilla::ELMCreationDetector&) src/dom/events/EventDispatcher.cpp:424:17
#37 mozilla::EventTargetChainItem::HandleEventTargetChain(nsTArray<mozilla::EventTargetChainItem>&, mozilla::EventChainPostVisitor&, mozilla::EventDispatchingCallback*, mozilla::ELMCreationDetector&) src/dom/events/EventDispatcher.cpp:641:16
#38 mozilla::EventDispatcher::Dispatch(nsISupports*, nsPresContext*, mozilla::WidgetEvent*, mozilla::dom::Event*, nsEventStatus*, mozilla::EventDispatchingCallback*, nsTArray<mozilla::dom::EventTarget*>*) src/dom/events/EventDispatcher.cpp:1156:11
#39 mozilla::EventDispatcher::DispatchDOMEvent(nsISupports*, mozilla::WidgetEvent*, mozilla::dom::Event*, nsPresContext*, nsEventStatus*) src/dom/events/EventDispatcher.cpp
#40 nsINode::DispatchEvent(mozilla::dom::Event&, mozilla::dom::CallerType, mozilla::ErrorResult&) src/dom/base/nsINode.cpp:1142:5
#41 nsContentUtils::DispatchEvent(nsIDocument*, nsISupports*, nsTSubstring<char16_t> const&, mozilla::CanBubble, mozilla::Cancelable, mozilla::Composed, mozilla::Trusted, bool*, mozilla::ChromeOnlyDispatch) src/dom/base/nsContentUtils.cpp:4456:28
#42 nsContentUtils::DispatchTrustedEvent(nsIDocument*, nsISupports*, nsTSubstring<char16_t> const&, mozilla::CanBubble, mozilla::Cancelable, mozilla::Composed, bool*) src/dom/base/nsContentUtils.cpp:4418:10
#43 nsIDocument::DispatchContentLoadedEvents() src/dom/base/nsDocument.cpp:5200:3
#44 mozilla::detail::RunnableMethodImpl<nsIDocument*, void (nsIDocument::*)(), true, (mozilla::RunnableKind)0>::Run() src/obj-firefox/dist/include/nsThreadUtils.h:1242:13
#45 mozilla::SchedulerGroup::Runnable::Run() src/xpcom/threads/SchedulerGroup.cpp:337:32
#46 nsThread::ProcessNextEvent(bool, bool*) src/xpcom/threads/nsThread.cpp:1245:14
#47 NS_ProcessNextEvent(nsIThread*, bool) src/xpcom/threads/nsThreadUtils.cpp:530:10
#48 mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) src/ipc/glue/MessagePump.cpp:97:21
#49 MessageLoop::RunInternal() src/ipc/chromium/src/base/message_loop.cc:325:10
#50 MessageLoop::Run() src/ipc/chromium/src/base/message_loop.cc:298:3
#51 nsBaseAppShell::Run() src/widget/nsBaseAppShell.cpp:158:27
#52 XRE_RunAppShell() src/toolkit/xre/nsEmbedFunctions.cpp:939:22
#53 mozilla::ipc::MessagePumpForChildProcess::Run(base::MessagePump::Delegate*) src/ipc/glue/MessagePump.cpp:269:9
#54 MessageLoop::RunInternal() src/ipc/chromium/src/base/message_loop.cc:325:10
#55 MessageLoop::Run() src/ipc/chromium/src/base/message_loop.cc:298:3
#56 XRE_InitChildProcess(int, char**, XREChildData const*) src/toolkit/xre/nsEmbedFunctions.cpp:765:34
#57 content_process_main(mozilla::Bootstrap*, int, char**) src/browser/app/../../ipc/contentproc/plugin-container.cpp:50:30
#58 main src/browser/app/nsBrowserApp.cpp:301:18
#59 __libc_start_main /build/glibc-Cl5G7W/glibc-2.23/csu/../csu/libc-start.c:291
#60 _start (firefox+0x329f4)
Flags: in-testsuite?
Flags: needinfo?(lsalzman)
Priority: -- → P3
Prior to this update we were registering these flattenables. During the update it had managed to escape failing any reftests without registering them, so I thought we were good that way... Apparently not. This restores the registration code.
Assignee: nobody → lsalzman
Status: NEW → ASSIGNED
Flags: needinfo?(lsalzman)
Attachment #9022234 - Flags: review?(rhunt)
Attachment #9022234 - Flags: review?(rhunt) → review+
https://hg.mozilla.org/mozilla-central/rev/36a7e1c98424
Status: ASSIGNED → RESOLVED
Closed: 1 year ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla65
Flags: in-testsuite? → in-testsuite+
You need to log in before you can comment on or make changes to this bug.