Closed Bug 1370063 Opened 7 years ago Closed 7 years ago

Crash in mozilla::MozPromise<T>::ChainTo

Categories

(Core :: Audio/Video: Playback, defect)

55 Branch
All
Windows
defect
Not set
critical

Tracking

()

RESOLVED FIXED
mozilla55
Tracking Status
firefox-esr52 --- unaffected
firefox54 --- unaffected
firefox55 + fixed

People

(Reporter: philipp, Assigned: jya)

References

Details

(Keywords: crash, regression)

Crash Data

This bug was filed from the Socorro interface and is 
report bp-d9f4d911-bf70-4b89-a491-a8f3a0170603.
=============================================================
Crashing Thread (21), Name: VideoChild
Frame 	Module 	Signature 	Source
0 	xul.dll 	mozilla::MozPromise<bool, mozilla::MediaResult, 1>::ChainTo(already_AddRefed<mozilla::MozPromise<bool, mozilla::MediaResult, 1>::Private>, char const*) 	obj-firefox/dist/include/mozilla/MozPromise.h:968
1 	xul.dll 	mozilla::detail::ProxyFunctionRunnable<<lambda_0a668af68202c4c8454dc1e89f116afc>, mozilla::MozPromise<bool, mozilla::MediaResult, 1> >::Run() 	obj-firefox/dist/include/mozilla/MozPromise.h:1488
2 	xul.dll 	mozilla::EventTargetWrapper::Runner::Run() 	xpcom/threads/AbstractThread.cpp:166
3 	xul.dll 	nsThread::ProcessNextEvent(bool, bool*) 	xpcom/threads/nsThread.cpp:1321
4 	xul.dll 	NS_ProcessNextEvent(nsIThread*, bool) 	xpcom/threads/nsThreadUtils.cpp:472
5 	xul.dll 	mozilla::ipc::MessagePumpForNonMainThreads::Run(base::MessagePump::Delegate*) 	ipc/glue/MessagePump.cpp:368
6 	xul.dll 	MessageLoop::RunHandler() 	ipc/chromium/src/base/message_loop.cc:231
7 	xul.dll 	MessageLoop::Run() 	ipc/chromium/src/base/message_loop.cc:211
8 	xul.dll 	nsThread::ThreadFunc(void*) 	xpcom/threads/nsThread.cpp:501
9 	nss3.dll 	PR_NativeRunThread 	nsprpub/pr/src/threads/combined/pruthr.c:397
10 	nss3.dll 	pr_root 	nsprpub/pr/src/md/windows/w95thred.c:95
11 	ucrtbase.dll 	o__realloc_base 	
12 	kernel32.dll 	BaseThreadInitThunk 	
13 	ntdll.dll 	RtlUserThreadStart

crash reports with this signature are regressing after 55.0a1 build 20170602030204. so far it's only on windows, in the content process and with "MOZ_RELEASE_ASSERT(!IsExclusive || !mHaveRequest)"

this would be the changelog to the day before:
https://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=bdb2387396b4a74dfefb7c983733eed3625e906a&tochange=aeb3d0ca558f034cbef1c5a68bd07dd738611494
gerald, any ideas? A MediaResult is involved. This is the #9 topcrash on Windows in Nightly 20170602030204.
http://searchfox.org/mozilla-central/rev/507743376d1ba753d14ab6b9305b7c6358570be8/dom/media/ipc/VideoDecoderChild.cpp#32-36

Do we also need to reject |mFlushPromise|? Or the call flow ensures it must've been resolved/rejected by the time destructor is called?
Flags: needinfo?(matt.woodrow)
Component: XPCOM → Audio/Video: Playback
Tracking for 55 since this looks like a recent crash spike/regression first appearing in Nightly on 6/2.
See Also: → 1308078
Probably best to check with jya, but I can't see why we don't need to reject mFlushPromise (or the other new promises).
Flags: needinfo?(matt.woodrow)
(In reply to JW Wang [:jwwang] [:jw_wang] from comment #3)
> http://searchfox.org/mozilla-central/rev/
> 507743376d1ba753d14ab6b9305b7c6358570be8/dom/media/ipc/VideoDecoderChild.
> cpp#32-36
> 
> Do we also need to reject |mFlushPromise|? Or the call flow ensures it
> must've been resolved/rejected by the time destructor is called?

I wrote that code...

The flush promise should always be resolved in the destructor as the MediaFormatReader will always flush the decoder first, wait for the flush promise to be resolved and then call shutdown.

So there should be no need to resolve the flush promise in the destructor
(In reply to JW Wang [:jwwang] [:jw_wang] from comment #2)
> https://crash-stats.mozilla.com/signature/?product=Firefox&version=55.
> 0a1&signature=mozilla%3A%3AMozPromise%3CT%3E%3A%3AChainTo&date=%3E%3D2017-05-
> 05T06%3A35%3A40.000Z&date=%3C2017-06-05T06%3A35%3A40.
> 000Z&_columns=date&_columns=product&_columns=version&_columns=build_id&_colum
> ns=platform&_columns=reason&_columns=address&_columns=install_time&_sort=-
> date&page=1#correlations
> 
> (100.0% in signature vs 24.52% overall) Addon "onboarding@mozilla.org" = true
> seems suspicious... What is this addon?

onboarding@mozilla.org is the Photon onboarding system addon.
(In reply to Kan-Ru Chen [:kanru] (UTC+8) from comment #7)
> (In reply to JW Wang [:jwwang] [:jw_wang] from comment #2)
> > https://crash-stats.mozilla.com/signature/?product=Firefox&version=55.
> > 0a1&signature=mozilla%3A%3AMozPromise%3CT%3E%3A%3AChainTo&date=%3E%3D2017-05-
> > 05T06%3A35%3A40.000Z&date=%3C2017-06-05T06%3A35%3A40.
> > 000Z&_columns=date&_columns=product&_columns=version&_columns=build_id&_colum
> > ns=platform&_columns=reason&_columns=address&_columns=install_time&_sort=-
> > date&page=1#correlations
> > 
> > (100.0% in signature vs 24.52% overall) Addon "onboarding@mozilla.org" = true
> > seems suspicious... What is this addon?
> 
> onboarding@mozilla.org is the Photon onboarding system addon.

Hi,  Fischer or Photon onboarding team,  is this on your radar?
Flags: needinfo?(fliu)
(In reply to Jean-Yves Avenard [:jya] from comment #6)
> (In reply to JW Wang [:jwwang] [:jw_wang] from comment #3)
> > http://searchfox.org/mozilla-central/rev/
> > 507743376d1ba753d14ab6b9305b7c6358570be8/dom/media/ipc/VideoDecoderChild.
> > cpp#32-36
> > 
> > Do we also need to reject |mFlushPromise|? Or the call flow ensures it
> > must've been resolved/rejected by the time destructor is called?
> 
> I wrote that code...
> 
> The flush promise should always be resolved in the destructor as the
> MediaFormatReader will always flush the decoder first, wait for the flush
> promise to be resolved and then call shutdown.
> 
> So there should be no need to resolve the flush promise in the destructor

Does that mean we could have a patch to fix this according to comment 6?  Mind suggesting how to proceed this bug, Blake?
Flags: needinfo?(bwu)
I expect this should have been fixed by jya in some other bug.
Flags: needinfo?(bwu) → needinfo?(jyavenard)
have there been more of those crashes lately?
the crash report above stopped after build 20170606030207 as far as I can tell, which is similar to when bug 1370805 landed.
Status: NEW → RESOLVED
Closed: 7 years ago
Flags: needinfo?(jyavenard)
Resolution: --- → FIXED
Assignee: nobody → jyavenard
Target Milestone: --- → mozilla55
Flags: needinfo?(fliu)
You need to log in before you can comment on or make changes to this bug.