diff options
author | ncbray@google.com <ncbray@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-05 18:38:56 +0000 |
---|---|---|
committer | ncbray@google.com <ncbray@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-05 18:38:56 +0000 |
commit | 9993310623dcf7a6b9834def8fec39a810ca6693 (patch) | |
tree | c0074f944030f819539fa8d518522d63331c863e /ppapi/native_client/src/trusted | |
parent | d24ed86e553643a54e834fac818b787d6c2633eb (diff) | |
download | chromium_src-9993310623dcf7a6b9834def8fec39a810ca6693.zip chromium_src-9993310623dcf7a6b9834def8fec39a810ca6693.tar.gz chromium_src-9993310623dcf7a6b9834def8fec39a810ca6693.tar.bz2 |
Instrument NaCl's plugin to generate a crash dump to help diagnose in-the-field failiures.
BUG= http://code.google.com/p/chromium/issues/detail?id=122057
TEST= none
Review URL: https://chromiumcodereview.appspot.com/9960029
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@130979 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/native_client/src/trusted')
-rw-r--r-- | ppapi/native_client/src/trusted/plugin/plugin.cc | 19 | ||||
-rw-r--r-- | ppapi/native_client/src/trusted/plugin/plugin.h | 2 |
2 files changed, 20 insertions, 1 deletions
diff --git a/ppapi/native_client/src/trusted/plugin/plugin.cc b/ppapi/native_client/src/trusted/plugin/plugin.cc index 7e3abe4..ace9821 100644 --- a/ppapi/native_client/src/trusted/plugin/plugin.cc +++ b/ppapi/native_client/src/trusted/plugin/plugin.cc @@ -1689,8 +1689,14 @@ void Plugin::ReportLoadError(const ErrorInfo& error_info) { // UMA HistogramEnumerateLoadStatus(error_info.error_code()); -} + // Temporary in-the-field debugging. + // TODO(ncbray) remove. + // http://code.google.com/p/chromium/issues/detail?id=122057 + if (error_info.error_code() == ERROR_START_PROXY_CRASH) { + GenerateCrashReportWithoutCrashing(); + } +} void Plugin::ReportLoadAbort() { PLUGIN_PRINTF(("Plugin::ReportLoadAbort\n")); @@ -1921,4 +1927,15 @@ void Plugin::AddToConsole(const nacl::string& text) { var_interface->Release(str); } +void Plugin::GenerateCrashReportWithoutCrashing() { +#if NACL_WINDOWS && !defined(NACL_STANDALONE) + typedef void (__cdecl *DumpProcessFunction)(); + // Find the dump function inside chrome.exe and call it. + DumpProcessFunction request_dump = reinterpret_cast<DumpProcessFunction>( + ::GetProcAddress(::GetModuleHandle(NULL), "DumpProcessWithoutCrash")); + if (request_dump) + request_dump(); +#endif +} + } // namespace plugin diff --git a/ppapi/native_client/src/trusted/plugin/plugin.h b/ppapi/native_client/src/trusted/plugin/plugin.h index 2946181..6119d5e 100644 --- a/ppapi/native_client/src/trusted/plugin/plugin.h +++ b/ppapi/native_client/src/trusted/plugin/plugin.h @@ -420,6 +420,8 @@ class Plugin : public pp::InstancePrivate { // Shuts down the proxy for PPAPI nexes. void ShutdownProxy(); // Nexe shutdown + proxy deletion. + void GenerateCrashReportWithoutCrashing(); + ScriptablePlugin* scriptable_plugin_; int argc_; |