Closed Bug 1376212 Opened 7 years ago Closed 7 years ago

stylo: Crash [@ nsAbsoluteContainingBlock::RemoveFrame ]

Categories

(Core :: Layout, defect, P1)

Unspecified
Linux
defect

Tracking

()

RESOLVED FIXED
mozilla56
Tracking Status
firefox-esr52 --- unaffected
firefox54 --- unaffected
firefox55 --- unaffected
firefox56 --- fixed

People

(Reporter: johnp, Assigned: xidorn)

References

(Blocks 1 open bug)

Details

(Keywords: crash)

Crash Data

This bug was filed from the Socorro interface and is 
report bp-d8aba41d-f7b2-4b22-a631-c4c370170625.
=============================================================
0 	libxul.so 	nsAbsoluteContainingBlock::RemoveFrame(nsIFrame*, mozilla::layout::FrameChildListID, nsIFrame*) 	
1 	libxul.so 	nsFrameManager::RemoveFrame 	layout/base/nsFrameManager.cpp:426
2 	libxul.so 	nsPlaceholderFrame::DestroyFrom(nsIFrame*) 	
3 	libxul.so 	nsBlockFrame::DoRemoveFrame(nsIFrame*, unsigned int) 	
4 	libxul.so 	nsBlockFrame::RemoveFrame(mozilla::layout::FrameChildListID, nsIFrame*) 	
5 	libxul.so 	nsCSSFrameConstructor::ContentRemoved(nsIContent*, nsIContent*, nsIContent*, nsCSSFrameConstructor::RemoveFlags, bool*, nsIContent**) 	
6 	libxul.so 	nsCSSFrameConstructor::RecreateFramesForContent(nsIContent*, bool, nsCSSFrameConstructor::RemoveFlags, nsIContent**) 	
7 	libxul.so 	mozilla::RestyleManager::ProcessRestyledFrames(nsStyleChangeList&) 	
8 	libxul.so 	mozilla::ServoRestyleManager::DoProcessPendingRestyles 	layout/base/ServoRestyleManager.cpp:629
9 	libxul.so 	libxul.so@0x1e08e93 	
10 	libxul.so 	nsRefreshDriver::Tick(long, mozilla::TimeStamp) 	
11 	libxul.so 	mozilla::RefreshDriverTimer::TickRefreshDrivers 	layout/base/nsRefreshDriver.cpp:327
12 	libxul.so 	mozilla::RefreshDriverTimer::Tick 	layout/base/nsRefreshDriver.cpp:319
13 	libxul.so 	mozilla::VsyncRefreshDriverTimer::RefreshDriverVsyncObserver::TickRefreshDriver 	layout/base/nsRefreshDriver.cpp:750
14 	libxul.so 	mozilla::VsyncRefreshDriverTimer::RefreshDriverVsyncObserver::NotifyVsync 	layout/base/nsRefreshDriver.cpp:564
15 	libxul.so 	mozilla::layout::VsyncChild::RecvNotify 	layout/ipc/VsyncChild.cpp:67
16 	libxul.so 	mozilla::layout::PVsyncChild::OnMessageReceived 	obj-firefox/ipc/ipdl/PVsyncChild.cpp:155
17 	libxul.so 	mozilla::ipc::PBackgroundChild::OnMessageReceived(IPC::Message const&) 	
18 	libxul.so 	mozilla::ipc::MessageChannel::DispatchAsyncMessage(IPC::Message const&) 	
19 	libxul.so 	libxul.so@0xc71261 	
20 	libxul.so 	mozilla::ipc::MessageChannel::MessageTask::Run() 	
21 	libxul.so 	nsThread::ProcessNextEvent(bool, bool*) 	
22 	libxul.so 	NS_ProcessNextEvent(nsIThread*, bool) 	
23 	libxul.so 	mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) 	
24 	libxul.so 	MessageLoop::Run() 	
25 	libxul.so 	nsBaseAppShell::Run 	widget/nsBaseAppShell.cpp:156
26 	libxul.so 	XRE_RunAppShell 	toolkit/xre/nsEmbedFunctions.cpp:896
27 	libxul.so 	MessageLoop::Run() 	
28 	libxul.so 	XRE_InitChildProcess 	toolkit/xre/nsEmbedFunctions.cpp:712
29 	firefox 	content_process_main 	ipc/contentproc/plugin-container.cpp:64
30 	firefox 	_init 	
Ø 31 	libc-2.25.so 	libc-2.25.so@0x204d9 	
32 	firefox 	firefox@0x1196f 	
33 	firefox 	firefox@0x1afdf 	
34 	firefox 	firefox@0x1196f 	
35 	firefox 	mozilla::ReadAheadLib(char const*) 	
Ø 36 	ld-2.25.so 	ld-2.25.so@0x1132f 	
37 	firefox 	firefox@0x1afdf 	
38 	firefox 	_start

Fwiw, at the same time, two crash reports were generated. This is the second one: 

bp-fd072b5b-7f8f-4c95-b5cc-9e6920170625
=============================================================
0 	libxul.so 	nsTArray_base<nsTArrayInfallibleAllocator, nsTArray_CopyWithMemutils>::SwapArrayElements<nsTArrayInfallibleAllocator, nsTArrayInfallibleAllocator> 	xpcom/ds/nsTArray-inl.h:338
1 	libxul.so 	nsCOMArray_base::Clear() 	
2 	libxul.so 	nsMutationReceiver::RemoveClones 	dom/base/nsDOMMutationObserver.h:378
3 	libxul.so 	nsMutationReceiver::Disconnect 	dom/base/nsDOMMutationObserver.cpp:114
4 	libxul.so 	nsMutationReceiver::~nsMutationReceiver 	dom/base/nsDOMMutationObserver.h:346
5 	libxul.so 	nsMutationReceiver::~nsMutationReceiver 	dom/base/nsDOMMutationObserver.h:346
6 	libxul.so 	nsMutationReceiver::Release 	dom/base/nsDOMMutationObserver.cpp:87
7 	libxul.so 	nsCOMArray_base::~nsCOMArray_base() 	
8 	libxul.so 	nsTHashtable<nsBaseHashtableET<nsISupportsHashKey, nsAutoPtr<nsCOMArray<nsMutationReceiver> > > >::s_ClearEntry 	xpcom/ds/nsCOMArray.h:246
9 	libxul.so 	PLDHashTable::Clear() 	
10 	libxul.so 	nsDOMMutationObserver::HandleMutation 	xpcom/ds/nsTHashtable.h:272
11 	libxul.so 	nsDOMMutationObserver::HandleMutationsInternal 	dom/base/nsDOMMutationObserver.cpp:906
12 	libxul.so 	mozilla::CycleCollectedJSContext::AfterProcessTask(unsigned int) 	
13 	libxul.so 	XPCJSContext::AfterProcessTask 	js/xpconnect/src/XPCJSContext.cpp:1007
14 	libxul.so 	nsThread::ProcessNextEvent(bool, bool*) 	
15 	libxul.so 	NS_ProcessNextEvent(nsIThread*, bool) 	
16 	libxul.so 	mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) 	
17 	libxul.so 	MessageLoop::Run() 	
18 	libxul.so 	nsBaseAppShell::Run 	widget/nsBaseAppShell.cpp:156
19 	libxul.so 	XRE_RunAppShell 	toolkit/xre/nsEmbedFunctions.cpp:896
20 	libxul.so 	MessageLoop::Run() 	
21 	libxul.so 	XRE_InitChildProcess 	toolkit/xre/nsEmbedFunctions.cpp:712
22 	firefox 	content_process_main 	ipc/contentproc/plugin-container.cpp:64
23 	firefox 	_init 	
Ø 24 	libc-2.25.so 	libc-2.25.so@0x204d9 	
25 	firefox 	firefox@0x1196f 	
26 	firefox 	firefox@0x1afdf 	
Ø 27 	locale-archive 	locale-archive@0x3cc0fff 	
28 	firefox 	firefox@0x1196f 	
29 	firefox 	mozilla::ReadAheadLib(char const*) 	
Ø 30 	ld-2.25.so 	ld-2.25.so@0x1132f 	
31 	firefox 	firefox@0x1afdf 	
32 	firefox 	_start
STR:
1. Visit flipboard tp read news feed.(signed in)
2. Doing random feeds reading back and forth.
3. Crashed tab observed.

The reproduced rate is low but generally it can happen in 3~5 mins.
Crash reports for reference:
d706dd03-615e-41d4-9db7-64a750170628
df0d6644-3eee-4568-921f-33c9d0170628
be84f5dc-2a63-4ce8-ba07-39ab70170628
62f626d6-cdc9-4343-ad3e-a6f6f0170628
Sounds like something is going bad with frame constructor.

It would be great if there could be some simplified testcase.
astley, could you try reproducing this issue with a debug build and see if there is any assertion around?
Flags: needinfo?(aschen)
Assignee: nobody → xidorn+moz
Priority: -- → P1
(In reply to Xidorn Quan [:xidorn] UTC+10 from comment #4)
> astley, could you try reproducing this issue with a debug build and see if
> there is any assertion around?

Yes, working on it.
I could easily reproduce this crash on Stylo macOS build as well.
Here comes the crash stack trace.

[Child 54191] WARNING: stylo: HasStateDependentStyle always returns zero!: file /Users/Astley/Mozilla/projects/mozilla-central/layout/style/ServoStyleSet.cpp, line 957
thread '<unnamed>' panicked at 'Resolving style on element without current styles with lazy computation forbidden.', /Users/Astley/Mozilla/projects/mozilla-central/servo/ports/geckolib/glue.rs:2603
stack backtrace:
   0: std::sys::imp::backtrace::tracing::imp::unwind_backtrace
   1: std::panicking::default_hook::{{closure}}
   2: std::panicking::default_hook
   3: std::panicking::rust_panic_with_hook
   4: std::panicking::begin_panic
   5: Servo_ResolveStyle
   6: _ZN7mozilla13ServoStyleSet17ResolveServoStyleEPNS_3dom7ElementE
   7: _ZN7mozilla19ServoRestyleManager20ProcessPostTraversalEPNS_3dom7ElementEP14nsStyleContextRNS_17ServoRestyleStateE
   8: _ZN7mozilla19ServoRestyleManager20ProcessPostTraversalEPNS_3dom7ElementEP14nsStyleContextRNS_17ServoRestyleStateE
   9: _ZN7mozilla19ServoRestyleManager20ProcessPostTraversalEPNS_3dom7ElementEP14nsStyleContextRNS_17ServoRestyleStateE
  10: _ZN7mozilla19ServoRestyleManager20ProcessPostTraversalEPNS_3dom7ElementEP14nsStyleContextRNS_17ServoRestyleStateE
  11: _ZN7mozilla19ServoRestyleManager20ProcessPostTraversalEPNS_3dom7ElementEP14nsStyleContextRNS_17ServoRestyleStateE
  12: _ZN7mozilla19ServoRestyleManager20ProcessPostTraversalEPNS_3dom7ElementEP14nsStyleContextRNS_17ServoRestyleStateE
  13: _ZN7mozilla19ServoRestyleManager20ProcessPostTraversalEPNS_3dom7ElementEP14nsStyleContextRNS_17ServoRestyleStateE
  14: _ZN7mozilla19ServoRestyleManager20ProcessPostTraversalEPNS_3dom7ElementEP14nsStyleContextRNS_17ServoRestyleStateE
  15: _ZN7mozilla19ServoRestyleManager20ProcessPostTraversalEPNS_3dom7ElementEP14nsStyleContextRNS_17ServoRestyleStateE
  16: _ZN7mozilla19ServoRestyleManager20ProcessPostTraversalEPNS_3dom7ElementEP14nsStyleContextRNS_17ServoRestyleStateE
  17: _ZN7mozilla19ServoRestyleManager20ProcessPostTraversalEPNS_3dom7ElementEP14nsStyleContextRNS_17ServoRestyleStateE
  18: _ZN7mozilla19ServoRestyleManager20ProcessPostTraversalEPNS_3dom7ElementEP14nsStyleContextRNS_17ServoRestyleStateE
  19: _ZN7mozilla19ServoRestyleManager20ProcessPostTraversalEPNS_3dom7ElementEP14nsStyleContextRNS_17ServoRestyleStateE
  20: _ZN7mozilla19ServoRestyleManager20ProcessPostTraversalEPNS_3dom7ElementEP14nsStyleContextRNS_17ServoRestyleStateE
  21: _ZN7mozilla19ServoRestyleManager24DoProcessPendingRestylesENS_24TraversalRestyleBehaviorE
  22: _ZN7mozilla9PresShell11HandleEventEP8nsIFramePNS_14WidgetGUIEventEbP13nsEventStatusPP10nsIContent
  23: _ZN7mozilla9PresShell11HandleEventEP8nsIFramePNS_14WidgetGUIEventEbP13nsEventStatusPP10nsIContent
  24: _ZN13nsViewManager13DispatchEventEPN7mozilla14WidgetGUIEventEP6nsViewP13nsEventStatus
  25: _ZN6nsView11HandleEventEPN7mozilla14WidgetGUIEventEb
  26: _ZN7mozilla6widget12PuppetWidget13DispatchEventEPNS_14WidgetGUIEventER13nsEventStatus
  27: _ZN7mozilla6layers18APZCCallbackHelper19DispatchWidgetEventERNS_14WidgetGUIEventE
  28: _ZN7mozilla3dom8TabChild24RecvRealMouseButtonEventERKNS_16WidgetMouseEventERKNS_6layers19ScrollableLayerGuidERKy
  29: _ZThn96_N7mozilla3dom8TabChild22RecvRealMouseMoveEventERKNS_16WidgetMouseEventERKNS_6layers19ScrollableLayerGuidERKy
  30: _ZN7mozilla3dom13PBrowserChild17OnMessageReceivedERKN3IPC7MessageE
  31: _ZN7mozilla3dom13PContentChild17OnMessageReceivedERKN3IPC7MessageE
  32: _ZN7mozilla3ipc14MessageChannel20DispatchAsyncMessageERKN3IPC7MessageE
  33: _ZN7mozilla3ipc14MessageChannel15DispatchMessageEON3IPC7MessageE
  34: _ZN7mozilla3ipc14MessageChannel10RunMessageERNS1_11MessageTaskE
  35: _ZN7mozilla3ipc14MessageChannel11MessageTask3RunEv
  36: _ZN7mozilla14SchedulerGroup8Runnable3RunEv
  37: _ZN8nsThread16ProcessNextEventEbPb
  38: _Z23NS_ProcessPendingEventsP9nsIThreadj
  39: _ZN14nsBaseAppShell19NativeEventCallbackEv
  40: _ZN10nsAppShell18ProcessGeckoEventsEPv
  41: __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
  42: __CFRunLoopDoSources0
  43: __CFRunLoopRun
  44: CFRunLoopRunSpecific
  45: RunCurrentEventLoopInMode
  46: ReceiveNextEventCommon
  47: _BlockUntilNextEventMatchingListInModeWithFilter
  48: _DPSNextEvent
  49: -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:]
  50: -[GeckoNSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]
  51: -[NSApplication run]
  52: _ZN10nsAppShell3RunEv
  53: _Z15XRE_RunAppShellv
  54: _ZN7mozilla3ipc26MessagePumpForChildProcess3RunEPN4base11MessagePump8DelegateE
  55: _ZN11MessageLoop3RunEv
  56: _Z20XRE_InitChildProcessiPPcPK12XREChildData
  57: main
Redirecting call to abort() to mozalloc_abort

Hit MOZ_CRASH() at /Users/Astley/Mozilla/projects/mozilla-central/memory/mozalloc/mozalloc_abort.cpp:33
Status: NEW → ASSIGNED
Flags: needinfo?(aschen)
It seems the stack trace in comment 6 is different from the one I encountered on Linux64 build.
I'm testing on a debug build on macOS, not sure if it's the case.
If not related, I'll fine another bug for follow-up.
That is an assertion added in bug 1345695. It is possible that you are hitting a different bug, or violation of that assertion is the root cause of the crash of this frame constructor issue.

astley, what did you see with you Linux64 build? Is that a debug build?

heycam, it seems you added the assertion mentioned in comment 6, what would you expect to happen if that assertion is violated? Is this bug (the crash with stack in comment 0) looks like something which can be related to that?
Flags: needinfo?(cam)
Flags: needinfo?(aschen)
The panic place in comment 6 is exactly same as bug 1371450 also the stack includes APZ thing, so I am suspecting this was caused by the same root cause, at least for Astley case.
(In reply to Xidorn Quan [:xidorn] UTC+10 from comment #8)
> That is an assertion added in bug 1345695. It is possible that you are
> hitting a different bug, or violation of that assertion is the root cause of
> the crash of this frame constructor issue.
> 
> astley, what did you see with you Linux64 build? Is that a debug build?

I'm encountering the same crash on my local Stylo Linux64 debug build. Presumably, you are guessing right...
I'm trying to have a non-debug build and see what happens.
Given comment 6 and comment 9, make bug 1371450 block this. We can see if this still happens after that gets fixed.
Depends on: 1371450
Tab crash on facebook. No STR yet.
bp-fd6ad759-09d7-4f69-90f2-e077a0170703 03.07.17 18:55 [@ nsAbsoluteContainingBlock::RemoveFrame ]
bp-19920cbc-277c-40d2-8d8e-e6f5f0170703 03.07.17 18:55 [@ nsAbsoluteContainingBlock::RemoveFrame ]
Closing bug 1371450 seems to fix this crash.
Flags: needinfo?(cam)
Flags: needinfo?(aschen)
Oops.
Status: ASSIGNED → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla56
You need to log in before you can comment on or make changes to this bug.