Closed Bug 1594949 Opened 5 years ago Closed 5 years ago

Assertion failure: gfxPath (Should have a valid cached gfx::Path for offset-path), at src/layout/base/MotionPathUtils.cpp:445

Categories

(Core :: Layout, defect, P3)

defect

Tracking

()

RESOLVED FIXED
mozilla72
Tracking Status
firefox-esr68 --- unaffected
firefox70 --- unaffected
firefox71 --- unaffected
firefox72 --- fixed

People

(Reporter: tsmith, Assigned: boris)

References

(Blocks 1 open bug, Regression)

Details

(Keywords: assertion, regression, testcase)

Attachments

(2 files)

Attached file testcase.html

Reduced with m-c:
BuildID=20191107230801
SourceStamp=ac63c8962183502a4b0ec32222efc67d3841d157

Please let me know if a Pernosco session would be helpful.

Assertion failure: gfxPath (Should have a valid cached gfx::Path for offset-path), at src/layout/base/MotionPathUtils.cpp:445

#0 mozilla::GenerateOffsetPathData(nsIFrame const*) src/layout/base/MotionPathUtils.cpp:444:7
#1 mozilla::MotionPathUtils::ResolveMotionPath(nsIFrame const*) src/layout/base/MotionPathUtils.cpp:478:7
#2 mozilla::IncrementScaleRestyleCountIfNeeded(nsIFrame*, mozilla::LayerActivity*) src/layout/painting/ActiveLayerTracker.cpp:283:7
#3 mozilla::ActiveLayerTracker::NotifyRestyle(nsIFrame*, nsCSSPropertyID) src/layout/painting/ActiveLayerTracker.cpp:312:5
#4 mozilla::DoApplyRenderingChangeToTree(nsIFrame*, nsChangeHint) src/layout/base/RestyleManager.cpp:1072:7
#5 mozilla::ApplyRenderingChangeToTree(mozilla::PresShell*, nsIFrame*, nsChangeHint) src/layout/base/RestyleManager.cpp:1217:3
#6 mozilla::RestyleManager::ProcessRestyledFrames(nsStyleChangeList&) src/layout/base/RestyleManager.cpp:1665:9
#7 mozilla::RestyleManager::DoProcessPendingRestyles(mozilla::ServoTraversalFlags) src/layout/base/RestyleManager.cpp:3085:9
#8 mozilla::PresShell::DoFlushPendingNotifications(mozilla::ChangesToFlush) src/layout/base/PresShell.cpp:4074:39
#9 nsRefreshDriver::Tick(mozilla::layers::BaseTransactionId<mozilla::VsyncIdType>, mozilla::TimeStamp) src/layout/base/nsRefreshDriver.cpp:1991:22
#10 mozilla::RefreshDriverTimer::TickRefreshDrivers(mozilla::layers::BaseTransactionId<mozilla::VsyncIdType>, mozilla::TimeStamp, nsTArray<RefPtr<nsRefreshDriver> >&) src/layout/base/nsRefreshDriver.cpp:350:7
#11 mozilla::RefreshDriverTimer::Tick(mozilla::layers::BaseTransactionId<mozilla::VsyncIdType>, mozilla::TimeStamp) src/layout/base/nsRefreshDriver.cpp:367:5
#12 mozilla::VsyncRefreshDriverTimer::RefreshDriverVsyncObserver::TickRefreshDriver(mozilla::layers::BaseTransactionId<mozilla::VsyncIdType>, mozilla::TimeStamp) src/layout/base/nsRefreshDriver.cpp:727:16
#13 mozilla::VsyncRefreshDriverTimer::RefreshDriverVsyncObserver::NotifyVsync(mozilla::VsyncEvent const&) src/layout/base/nsRefreshDriver.cpp:622:9
#14 mozilla::layout::VsyncChild::RecvNotify(mozilla::VsyncEvent const&) src/layout/ipc/VsyncChild.cpp:65:16
#15 mozilla::layout::PVsyncChild::OnMessageReceived(IPC::Message const&) src/obj-firefox/ipc/ipdl/PVsyncChild.cpp:187:54
#16 mozilla::ipc::PBackgroundChild::OnMessageReceived(IPC::Message const&) src/obj-firefox/ipc/ipdl/PBackgroundChild.cpp:5876:32
#17 mozilla::ipc::MessageChannel::DispatchAsyncMessage(mozilla::ipc::ActorLifecycleProxy*, IPC::Message const&) src/ipc/glue/MessageChannel.cpp:2208:25
#18 mozilla::ipc::MessageChannel::DispatchMessage(IPC::Message&&) src/ipc/glue/MessageChannel.cpp:2130:9
#19 mozilla::ipc::MessageChannel::RunMessage(mozilla::ipc::MessageChannel::MessageTask&) src/ipc/glue/MessageChannel.cpp:1972:3
#20 mozilla::ipc::MessageChannel::MessageTask::Run() src/ipc/glue/MessageChannel.cpp:2003:13
#21 nsThread::ProcessNextEvent(bool, bool*) src/xpcom/threads/nsThread.cpp:1225:14
#22 NS_ProcessNextEvent(nsIThread*, bool) src/xpcom/threads/nsThreadUtils.cpp:486:10
#23 mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) src/ipc/glue/MessagePump.cpp:88:21
#24 MessageLoop::RunInternal() src/ipc/chromium/src/base/message_loop.cc:315:10
#25 MessageLoop::Run() src/ipc/chromium/src/base/message_loop.cc:290:3
#26 nsBaseAppShell::Run() src/widget/nsBaseAppShell.cpp:137:27
#27 XRE_RunAppShell() src/toolkit/xre/nsEmbedFunctions.cpp:934:20
#28 mozilla::ipc::MessagePumpForChildProcess::Run(base::MessagePump::Delegate*) src/ipc/glue/MessagePump.cpp:238:9
#29 MessageLoop::RunInternal() src/ipc/chromium/src/base/message_loop.cc:315:10
#30 MessageLoop::Run() src/ipc/chromium/src/base/message_loop.cc:290:3
#31 XRE_InitChildProcess(int, char**, XREChildData const*) src/toolkit/xre/nsEmbedFunctions.cpp:769:34
#32 content_process_main(mozilla::Bootstrap*, int, char**) src/browser/app/../../ipc/contentproc/plugin-container.cpp:56:28
#33 main src/browser/app/nsBrowserApp.cpp:272:18
Flags: in-testsuite?
Regressed by: 1484780
Keywords: regression
Priority: -- → P3
Assignee: nobody → boris.chiou

This is possible after we change the style but the frame is still
out-of-dated.

Attachment #9107388 - Attachment description: Bug 1594949 - Rebuild gfx::Path for offset-path if we haven't cached it. → Bug 1594949 - Use null gfx::Path for offset-path if we haven't cached it.

There is another possible call stack by the same test case:

#0  0x00007f758d4b7bea in mozilla::GenerateOffsetPathData(nsIFrame const*) (aFrame=0x7f757efa0dd8) at /home/boris/Projects/firefox/gecko-dev/layout/base/MotionPathUtils.cpp:444
#1  0x00007f758d4b7bea in mozilla::MotionPathUtils::ResolveMotionPath(nsIFrame const*) (aFrame=0x7f757efa0dd8) at /home/boris/Projects/firefox/gecko-dev/layout/base/MotionPathUtils.cpp:478
#2  0x00007f758d80dcbb in nsDisplayTransform::FrameTransformProperties::FrameTransformProperties(nsIFrame const*, float, nsRect const*) (this=0x7ffe7aad7a60, aFrame=0x7f757efa0dd8, aAppUnitsPerPixel=60, aBoundsOverride=0x0) at /home/boris/Projects/firefox/gecko-dev/layout/painting/nsDisplayList.cpp:8246
#3  0x00007f758d80e523 in nsDisplayTransform::GetResultingTransformMatrix(nsIFrame const*, nsPoint const&, float, unsigned int, nsRect const*) (aFrame=0x7f759b9658b0 <_IO_stdfile_2_lock>, aOrigin=..., aAppUnitsPerPixel=60, aFlags=0x7, aBoundsOverride=0x0) at /home/boris/Projects/firefox/gecko-dev/layout/painting/nsDisplayList.cpp:8264
#4  0x00007f758d8109e9 in nsDisplayTransform::TransformRect(nsRect const&, nsIFrame const*, nsRect const*) (aUntransformedBounds=..., aFrame=<optimized out>, aBoundsOverride=0x7f759b9658b0 <_IO_stdfile_2_lock>) at /home/boris/Projects/firefox/gecko-dev/layout/painting/nsDisplayList.cpp:9182
#5  0x00007f758d5e4485 in nsIFrame::FinishAndStoreOverflow(nsOverflowAreas&, nsSize, nsSize*, nsStyleDisplay const*) (this=<optimized out>, aOverflowAreas=..., aNewSize=..., aOldSize=<optimized out>, aStyleDisplay=<optimized out>) at /home/boris/Projects/firefox/gecko-dev/layout/generic/nsFrame.cpp:9603
#6  0x00007f758d5e3539 in nsIFrame::UpdateOverflow() (this=0x7f757efa0dd8) at /home/boris/Projects/firefox/gecko-dev/layout/generic/nsFrame.cpp:7655
#7  0x00007f758d4e6f1a in mozilla::OverflowChangedTracker::Flush() (this=0x7f757efc6230) at /home/boris/Projects/firefox/gecko-dev/layout/base/OverflowChangedTracker.h:110
#8  0x00007f758d4e031e in mozilla::RestyleManager::FlushOverflowChangedTracker() (this=0x7f757efc6200) at /home/boris/Projects/firefox/gecko-dev/objdirs/obj-browser-debug/dist/include/mozilla/RestyleManager.h:239
#9  0x00007f758d4e031e in mozilla::RestyleManager::DoProcessPendingRestyles(mozilla::ServoTraversalFlags) (this=<optimized out>, aFlags=mozilla::ServoTraversalFlags::Empty) at /home/boris/Projects/firefox/gecko-dev/layout/base/RestyleManager.cpp:3129
#10 0x00007f758d4c5f58 in mozilla::PresShell::DoFlushPendingNotifications(mozilla::ChangesToFlush) (this=0x7f757efc8000, aFlush=...) at /home/boris/Projects/firefox/gecko-dev/layout/base/PresShell.cpp:4074
#11 0x00007f758d4a0688 in mozilla::PresShell::FlushPendingNotifications(mozilla::ChangesToFlush) (this=0x7f757efc8000, aType=...) at /home/boris/Projects/firefox/gecko-dev/objdirs/obj-browser-debug/dist/include/mozilla/PresShell.h:1452
#12 0x00007f758d4a0688 in nsRefreshDriver::Tick(mozilla::layers::BaseTransactionId<mozilla::VsyncIdType>, mozilla::TimeStamp) (this=0x7f75820c5000, aId=..., aNowTime=...) at /home/boris/Projects/firefox/gecko-dev/layout/base/nsRefreshDriver.cpp:1991
#13 0x00007f758d4a5838 in mozilla::RefreshDriverTimer::TickDriver(nsRefreshDriver*, mozilla::layers::BaseTransactionId<mozilla::VsyncIdType>, mozilla::TimeStamp) (driver=0x7f759b964680 <_IO_2_1_stderr_>, aId=..., now=...) at /home/boris/Projects/firefox/gecko-dev/layout/base/nsRefreshDriver.cpp:373
#14 0x00007f758d4a5838 in mozilla::RefreshDriverTimer::TickRefreshDrivers(mozilla::layers::BaseTransactionId<mozilla::VsyncIdType>, mozilla::TimeStamp, nsTArray<RefPtr<nsRefreshDriver> >&) (this=<optimized out>, aId=..., aNow=..., aDrivers=...) at /home/boris/Projects/firefox/gecko-dev/layout/base/nsRefreshDriver.cpp:350
#15 0x00007f758d4a572e in mozilla::RefreshDriverTimer::Tick(mozilla::layers::BaseTransactionId<mozilla::VsyncIdType>, mozilla::TimeStamp) (this=0x7f75820a8b20, aId=..., now=...) at /home/boris/Projects/firefox/gecko-dev/layout/base/nsRefreshDriver.cpp:367
#16 0x00007f758d4a69e6 in mozilla::VsyncRefreshDriverTimer::RunRefreshDrivers(mozilla::layers::BaseTransactionId<mozilla::VsyncIdType>, mozilla::TimeStamp) (this=0x7f7586d868d8, aId=..., aTimeStamp=...) at /home/boris/Projects/firefox/gecko-dev/layout/base/nsRefreshDriver.cpp:807
#17 0x00007f758d4a69e6 in mozilla::VsyncRefreshDriverTimer::RefreshDriverVsyncObserver::TickRefreshDriver(mozilla::layers::BaseTransactionId<mozilla::VsyncIdType>, mozilla::TimeStamp) (this=0x7f757e2a1880, aId=..., aVsyncTimestamp=...) at /home/boris/Projects/firefox/gecko-dev/layout/base/nsRefreshDriver.cpp:727
#18 0x00007f758d4a64c6 in mozilla::VsyncRefreshDriverTimer::RefreshDriverVsyncObserver::NotifyVsync(mozilla::VsyncEvent const&) (this=0x7f757e2a1880, aVsync=...) at /home/boris/Projects/firefox/gecko-dev/layout/base/nsRefreshDriver.cpp:622
#19 0x00007f758d78f75d in mozilla::layout::VsyncChild::RecvNotify(mozilla::VsyncEvent const&) (this=<optimized out>, aVsync=...) at /home/boris/Projects/firefox/gecko-dev/layout/ipc/VsyncChild.cpp:65
#20 0x00007f758ae76e10 in mozilla::layout::PVsyncChild::OnMessageReceived(IPC::Message const&) (this=0x7f75820a8a00, msg__=...) at PVsyncChild.cpp:187
#21 0x00007f758acf68b2 in mozilla::ipc::PBackgroundChild::OnMessageReceived(IPC::Message const&) (this=0x7f757effe000, msg__=...) at PBackgroundChild.cpp:5876
#22 0x00007f758aae788d in mozilla::ipc::MessageChannel::DispatchAsyncMessage(mozilla::ipc::ActorLifecycleProxy*, IPC::Message const&) (this=0x7f757effe120, aProxy=0x7f757ee2d0a0, aMsg=...) at /home/boris/Projects/firefox/gecko-dev/ipc/glue/MessageChannel.cpp:2208
#23 0x00007f758aae686e in mozilla::ipc::MessageChannel::DispatchMessage(IPC::Message&&) (this=0x7f757effe120, aMsg=...) at /home/boris/Projects/firefox/gecko-dev/ipc/glue/MessageChannel.cpp:2130
#24 0x00007f758aae6ee3 in mozilla::ipc::MessageChannel::RunMessage(mozilla::ipc::MessageChannel::MessageTask&) (this=0x7f757effe120, aTask=...) at /home/boris/Projects/firefox/gecko-dev/ipc/glue/MessageChannel.cpp:1972
#25 0x00007f758aae71da in mozilla::ipc::MessageChannel::MessageTask::Run() (this=0x7f757e2a0200) at /home/boris/Projects/firefox/gecko-dev/ipc/glue/MessageChannel.cpp:2003
#26 0x00007f758a477972 in nsThread::ProcessNextEvent(bool, bool*) (this=0x7f759b187a60, aMayWait=<optimized out>, aResult=0x7ffe7aad97a7) at /home/boris/Projects/firefox/gecko-dev/xpcom/threads/nsThread.cpp:1225
#27 0x00007f758a47a329 in NS_ProcessNextEvent(nsIThread*, bool) (aThread=0x7f759b964680 <_IO_2_1_stderr_>, aMayWait=0x0) at /home/boris/Projects/firefox/gecko-dev/xpcom/threads/nsThreadUtils.cpp:486
#28 0x00007f758aae9700 in mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) (this=0x7f759b1a1380, aDelegate=0x7ffe7aad9980) at /home/boris/Projects/firefox/gecko-dev/ipc/glue/MessagePump.cpp:88
#29 0x00007f758aa75479 in MessageLoop::RunHandler() (this=0x7ffe7aad9980) at /home/boris/Projects/firefox/gecko-dev/ipc/chromium/src/base/message_loop.cc:308
#30 0x00007f758aa75479 in MessageLoop::Run() (this=0x7ffe7aad9980) at /home/boris/Projects/firefox/gecko-dev/ipc/chromium/src/base/message_loop.cc:290
#31 0x00007f758d2c60f5 in nsBaseAppShell::Run() (this=0x7f75835dceb0) at /home/boris/Projects/firefox/gecko-dev/widget/nsBaseAppShell.cpp:137
#32 0x00007f758e697f85 in XRE_RunAppShell() () at /home/boris/Projects/firefox/gecko-dev/toolkit/xre/nsEmbedFunctions.cpp:934
#33 0x00007f758aae9cdf in mozilla::ipc::MessagePumpForChildProcess::Run(base::MessagePump::Delegate*) (this=0x7f759b1a1380, aDelegate=0x7ffe7aad9980) at /home/boris/Projects/firefox/gecko-dev/ipc/glue/MessagePump.cpp:238
#34 0x00007f758aa75479 in MessageLoop::RunHandler() (this=0x7ffe7aad9980) at /home/boris/Projects/firefox/gecko-dev/ipc/chromium/src/base/message_loop.cc:308
#35 0x00007f758aa75479 in MessageLoop::Run() (this=0x7ffe7aad9980) at /home/boris/Projects/firefox/gecko-dev/ipc/chromium/src/base/message_loop.cc:290
#36 0x00007f758e69786a in XRE_InitChildProcess(int, char**, XREChildData const*) (aArgc=<optimized out>, aArgv=<optimized out>, aChildData=<optimized out>) at /home/boris/Projects/firefox/gecko-dev/toolkit/xre/nsEmbedFunctions.cpp:769
#37 0x000055ae6e64615e in content_process_main(mozilla::Bootstrap*, int, char**) (bootstrap=0x7f759b1026c0, argc=0xf, argv=0x7ffe7aadadd8) at /home/boris/Projects/firefox/gecko-dev/browser/app/../../ipc/contentproc/plugin-container.cpp:56
#38 0x000055ae6e646453 in main(int, char**, char**) (argc=0x10, argv=0x7ffe7aadadd8, envp=<optimized out>) at /home/boris/Projects/firefox/gecko-dev/browser/app/nsBrowserApp.cpp:272
Attachment #9107388 - Attachment description: Bug 1594949 - Use null gfx::Path for offset-path if we haven't cached it. → Bug 1594949 - Fix assertion of gfx::Path when changing offset-path on SVGTextFrame.
Attachment #9107388 - Attachment description: Bug 1594949 - Fix assertion of gfx::Path when changing offset-path on SVGTextFrame. → Bug 1594949 - Fix assertion of gfx::Path when changing offset-path on some svg frames.
Pushed by bchiou@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/71e6f3199f98 Fix assertion of gfx::Path when changing offset-path on some svg frames. r=heycam
Status: NEW → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla72
Flags: in-testsuite? → in-testsuite+
Regressions: 1609663
Has Regression Range: --- → yes
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: