mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-10 03:45:46 +00:00
Bug 1178998 - Identify which hang detector reports a hang. r=billm
This commit is contained in:
parent
39d0eb3c1f
commit
a10d0c34c0
@ -817,7 +817,8 @@ HangMonitoredProcess::TerminatePlugin()
|
||||
}
|
||||
|
||||
uint32_t id = mHangData.get_PluginHangData().pluginId();
|
||||
plugins::TerminatePlugin(id, mBrowserDumpId);
|
||||
plugins::TerminatePlugin(id, NS_LITERAL_CSTRING("HangMonitor"),
|
||||
mBrowserDumpId);
|
||||
|
||||
if (mActor) {
|
||||
mActor->CleanupPluginHang(id, false);
|
||||
|
@ -25,7 +25,9 @@ FindPluginsForContent(uint32_t aPluginEpoch,
|
||||
uint32_t* aNewPluginEpoch);
|
||||
|
||||
void
|
||||
TerminatePlugin(uint32_t aPluginId, const nsString& aBrowserDumpId);
|
||||
TerminatePlugin(uint32_t aPluginId,
|
||||
const nsCString& aMonitorDescription,
|
||||
const nsAString& aBrowserDumpId);
|
||||
|
||||
} // namespace plugins
|
||||
} // namespace mozilla
|
||||
|
@ -353,7 +353,9 @@ PluginHangUIParent::RecvUserResponse(const unsigned int& aResponse)
|
||||
int responseCode;
|
||||
if (aResponse & HANGUI_USER_RESPONSE_STOP) {
|
||||
// User clicked Stop
|
||||
mModule->TerminateChildProcess(mMainThreadMessageLoop, EmptyString());
|
||||
mModule->TerminateChildProcess(mMainThreadMessageLoop,
|
||||
NS_LITERAL_CSTRING("ModalHangUI"),
|
||||
EmptyString());
|
||||
responseCode = 1;
|
||||
} else if(aResponse & HANGUI_USER_RESPONSE_CONTINUE) {
|
||||
mModule->OnHangUIContinue();
|
||||
|
@ -350,7 +350,9 @@ bool PluginModuleMapping::sIsLoadModuleOnStack = false;
|
||||
} // anonymous namespace
|
||||
|
||||
void
|
||||
mozilla::plugins::TerminatePlugin(uint32_t aPluginId, const nsString& aBrowserDumpId)
|
||||
mozilla::plugins::TerminatePlugin(uint32_t aPluginId,
|
||||
const nsCString& aMonitorDescription,
|
||||
const nsAString& aBrowserDumpId)
|
||||
{
|
||||
MOZ_ASSERT(XRE_IsParentProcess());
|
||||
|
||||
@ -360,8 +362,11 @@ mozilla::plugins::TerminatePlugin(uint32_t aPluginId, const nsString& aBrowserDu
|
||||
return;
|
||||
}
|
||||
nsRefPtr<nsNPAPIPlugin> plugin = pluginTag->mPlugin;
|
||||
PluginModuleChromeParent* chromeParent = static_cast<PluginModuleChromeParent*>(plugin->GetLibrary());
|
||||
chromeParent->TerminateChildProcess(MessageLoop::current(), aBrowserDumpId);
|
||||
PluginModuleChromeParent* chromeParent =
|
||||
static_cast<PluginModuleChromeParent*>(plugin->GetLibrary());
|
||||
chromeParent->TerminateChildProcess(MessageLoop::current(),
|
||||
aMonitorDescription,
|
||||
aBrowserDumpId);
|
||||
}
|
||||
|
||||
/* static */ PluginLibrary*
|
||||
@ -1154,7 +1159,9 @@ PluginModuleChromeParent::ShouldContinueFromReplyTimeout()
|
||||
// original plugin hang behaviour and kill the plugin container.
|
||||
FinishHangUI();
|
||||
#endif // XP_WIN
|
||||
TerminateChildProcess(MessageLoop::current(), EmptyString());
|
||||
TerminateChildProcess(MessageLoop::current(),
|
||||
NS_LITERAL_CSTRING("ModalHangUI"),
|
||||
EmptyString());
|
||||
GetIPCChannel()->CloseWithTimeout();
|
||||
return false;
|
||||
}
|
||||
@ -1178,6 +1185,7 @@ PluginModuleContentParent::OnExitedSyncSend()
|
||||
|
||||
void
|
||||
PluginModuleChromeParent::TerminateChildProcess(MessageLoop* aMsgLoop,
|
||||
const nsCString& aMonitorDescription,
|
||||
const nsAString& aBrowserDumpId)
|
||||
{
|
||||
#ifdef MOZ_CRASHREPORTER
|
||||
@ -1194,6 +1202,8 @@ PluginModuleChromeParent::TerminateChildProcess(MessageLoop* aMsgLoop,
|
||||
#endif
|
||||
crashReporter->AnnotateCrashReport(NS_LITERAL_CSTRING("PluginHang"),
|
||||
NS_LITERAL_CSTRING("1"));
|
||||
crashReporter->AnnotateCrashReport(NS_LITERAL_CSTRING("HangMonitorDescription"),
|
||||
aMonitorDescription);
|
||||
#ifdef XP_WIN
|
||||
if (mHangUIParent) {
|
||||
unsigned int hangUIDuration = mHangUIParent->LastShowDurationMs();
|
||||
|
@ -386,12 +386,17 @@ class PluginModuleChromeParent
|
||||
*
|
||||
* @param aMsgLoop the main message pump associated with the module
|
||||
* protocol.
|
||||
* @param aMonitorDescription a string describing the hang monitor that
|
||||
* is making this call. This string is added to the crash reporter
|
||||
* annotations for the plugin process.
|
||||
* @param aBrowserDumpId (optional) previously taken browser dump id. If
|
||||
* provided TerminateChildProcess will use this browser dump file in
|
||||
* generating a multi-process crash report. If not provided a browser
|
||||
* dump will be taken at the time of this call.
|
||||
*/
|
||||
void TerminateChildProcess(MessageLoop* aMsgLoop, const nsAString& aBrowserDumpId);
|
||||
void TerminateChildProcess(MessageLoop* aMsgLoop,
|
||||
const nsCString& aMonitorDescription,
|
||||
const nsAString& aBrowserDumpId);
|
||||
|
||||
#ifdef XP_WIN
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user