It seems to be possible for an inner-window-destroyed notification to be dispatched
after xpcom-shutdown. This means that communications over the Services.cpmm are
attempted after the connection to the parent process has already been torn down. This
can cause an Exception to be thrown, which can keep the ContentProcessMessageManager
alive long enough to cause SpiderMonkey to complain that there are still living
elements in its heap at JS shutdown time.
MozReview-Commit-ID: wmCHtqcjkJ
Crash reporting for GMPs being used from the EME call site are not generating
crash reports because they depend on the MediaKeys object calling
GMPService::AddPluginCrashHandler() to associate a window to which the
PluginCrashedEvent is fired. This doesn't work with e10s enabled because the
GMPParent which causes the plugin crash handlers to run is in the chrome
process, but the MediaKeys which adds the handler is in the child process. So
the crash handler is on the GMPServiceChild, but we only run the crash handlers
that were added to the GMPServiceParent in the chrome/parent process.
The solution is to broadcast a message from the chrome process to all the
content processes when a GMP has crashed that causes the GMPServiceChild to
also run its crash handlers.
MozReview-Commit-ID: 8Lek16G9ZGb