Closed Bug 1379941 Opened 7 years ago Closed 7 years ago

stylo: Crash in mozilla::css::GroupRule::cycleCollection::Unlink

Categories

(Core :: CSS Parsing and Computation, defect, P1)

56 Branch
Unspecified
Windows 10
defect

Tracking

()

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

People

(Reporter: philipp, Assigned: xidorn)

References

(Blocks 1 open bug)

Details

(Keywords: crash, regression)

Crash Data

This bug was filed from the Socorro interface and is 
report bp-29b52a7d-494d-4f78-bb97-e0af10170711.
=============================================================
Crashing Thread (0)
Frame 	Module 	Signature 	Source
0 	xul.dll 	mozilla::css::GroupRule::cycleCollection::Unlink(void*) 	layout/style/GroupRule.cpp:271
1 	xul.dll 	mozilla::ServoMediaRule::cycleCollection::Unlink(void*) 	layout/style/ServoMediaRule.cpp:36
2 	xul.dll 	nsCycleCollector::CollectWhite() 	xpcom/base/nsCycleCollector.cpp:3343
3 	xul.dll 	nsCycleCollector::Collect(ccType, js::SliceBudget&, nsICycleCollectorListener*, bool) 	xpcom/base/nsCycleCollector.cpp:3695
4 	xul.dll 	nsCycleCollector_collectSlice(js::SliceBudget&, bool) 	xpcom/base/nsCycleCollector.cpp:4224
5 	xul.dll 	nsJSContext::RunCycleCollectorSlice(mozilla::TimeStamp) 	dom/base/nsJSEnvironment.cpp:1733
6 	xul.dll 	ICCRunnerFired 	dom/base/nsJSEnvironment.cpp:1792
7 	xul.dll 	CollectorRunner::Run() 	dom/base/nsJSEnvironment.cpp:264
8 	xul.dll 	CollectorRunner::TimedOut(nsITimer*, void*) 	dom/base/nsJSEnvironment.cpp:281
9 	xul.dll 	nsTimerImpl::Fire(int) 	xpcom/threads/nsTimerImpl.cpp:510
10 	xul.dll 	nsTimerEvent::Run() 	xpcom/threads/TimerThread.cpp:286
11 	xul.dll 	nsThread::ProcessNextEvent(bool, bool*) 	xpcom/threads/nsThread.cpp:1437
12 	xul.dll 	NS_ProcessNextEvent(nsIThread*, bool) 	xpcom/threads/nsThreadUtils.cpp:489
13 	xul.dll 	mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) 	ipc/glue/MessagePump.cpp:125
14 	xul.dll 	mozilla::ipc::MessagePumpForChildProcess::Run(base::MessagePump::Delegate*) 	ipc/glue/MessagePump.cpp:302
15 	xul.dll 	MessageLoop::RunHandler() 	ipc/chromium/src/base/message_loop.cc:313
16 	xul.dll 	MessageLoop::Run() 	ipc/chromium/src/base/message_loop.cc:293
17 	xul.dll 	nsBaseAppShell::Run() 	widget/nsBaseAppShell.cpp:156
18 	xul.dll 	nsAppShell::Run() 	widget/windows/nsAppShell.cpp:271
19 	xul.dll 	XRE_RunAppShell() 	toolkit/xre/nsEmbedFunctions.cpp:895
20 	xul.dll 	mozilla::ipc::MessagePumpForChildProcess::Run(base::MessagePump::Delegate*) 	ipc/glue/MessagePump.cpp:270
21 	xul.dll 	MessageLoop::RunHandler() 	ipc/chromium/src/base/message_loop.cc:313
22 	xul.dll 	MessageLoop::Run() 	ipc/chromium/src/base/message_loop.cc:293
23 	xul.dll 	XRE_InitChildProcess(int, char** const, XREChildData const*) 	toolkit/xre/nsEmbedFunctions.cpp:711
24 	firefox.exe 	content_process_main(mozilla::Bootstrap*, int, char** const) 	ipc/contentproc/plugin-container.cpp:64
25 	firefox.exe 	NS_internal_main(int, char**, char**) 	browser/app/nsBrowserApp.cpp:286
26 	firefox.exe 	wmain 	toolkit/xre/nsWindowsWMain.cpp:115
27 	firefox.exe 	__scrt_common_main_seh 	f:/dd/vctools/crt/vcstartup/src/startup/exe_common.inl:253
28 	kernel32.dll 	BaseThreadInitThunk 	
29 	ntdll.dll 	RtlUserThreadStart

crashes with this signature are showing up since 56.0a1 build 20170706060058 when stylo was enabled on windows. so far all the reports are coming from windows 10 users with an nvidia gpu (not sure if this is a coincidence).
I guess the issue here is that ServoGroupRuleRules::mRuleList is nullptr when we call ServoGroupRuleRules::Clear(). I guess adding a null-check in Clear() would fix this crash.

However, it seems to me that mRuleList can be nullptr only when Clear() is called, and Clear() is only called from Unlink(). That means Unlink can be invoked multiple times for an object?

smaug, can Unlink be invoked multiple times on one object?
Flags: needinfo?(bugs)
Yes if unlinking is incomplete elsewhere.
Flags: needinfo?(bugs)
Ok, NI to xidorn to land the null-check. rs=me.
Assignee: nobody → xidorn+moz
Flags: needinfo?(xidorn+moz)
Pushed by xquan@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/3c3af3fff558
Null-check mRuleList in ServoGroupRuleRules::Clear. rs=bholley
Priority: -- → P1
Flags: needinfo?(xidorn+moz)
https://hg.mozilla.org/mozilla-central/rev/3c3af3fff558
Status: NEW → 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.