Index: ppapi/native_client/src/trusted/plugin/service_runtime.cc |
diff --git a/ppapi/native_client/src/trusted/plugin/service_runtime.cc b/ppapi/native_client/src/trusted/plugin/service_runtime.cc |
index ffce56320dedd85df0dc9ae4d7f82fa6291d2142..5c463e0815ce50939a2b5199346ffb658d70cb34 100644 |
--- a/ppapi/native_client/src/trusted/plugin/service_runtime.cc |
+++ b/ppapi/native_client/src/trusted/plugin/service_runtime.cc |
@@ -58,14 +58,12 @@ PluginReverseInterface::PluginReverseInterface( |
nacl::WeakRefAnchor* anchor, |
PP_Instance pp_instance, |
ServiceRuntime* service_runtime, |
- pp::CompletionCallback init_done_cb, |
- pp::CompletionCallback crash_cb) |
+ pp::CompletionCallback init_done_cb) |
: anchor_(anchor), |
pp_instance_(pp_instance), |
service_runtime_(service_runtime), |
shutting_down_(false), |
- init_done_cb_(init_done_cb), |
- crash_cb_(crash_cb) { |
+ init_done_cb_(init_done_cb) { |
NaClXMutexCtor(&mu_); |
NaClXCondVarCtor(&cv_); |
} |
@@ -223,18 +221,7 @@ void PluginReverseInterface::StreamAsFile_MainThreadContinuation( |
} |
void PluginReverseInterface::ReportCrash() { |
- NaClLog(4, "PluginReverseInterface::ReportCrash\n"); |
- |
- if (crash_cb_.pp_completion_callback().func != NULL) { |
- NaClLog(4, "PluginReverseInterface::ReportCrash: invoking CB\n"); |
- pp::Module::Get()->core()->CallOnMainThread(0, crash_cb_, PP_OK); |
- // Clear the callback to avoid it gets invoked twice. |
- crash_cb_ = pp::CompletionCallback(); |
- } else { |
- NaClLog(1, |
- "PluginReverseInterface::ReportCrash:" |
- " crash_cb_ not valid, skipping\n"); |
- } |
+ // This is now handled through Chromium IPC. |
} |
void PluginReverseInterface::ReportExitStatus(int exit_status) { |
@@ -251,8 +238,7 @@ ServiceRuntime::ServiceRuntime(Plugin* plugin, |
PP_Instance pp_instance, |
bool main_service_runtime, |
bool uses_nonsfi_mode, |
- pp::CompletionCallback init_done_cb, |
- pp::CompletionCallback crash_cb) |
+ pp::CompletionCallback init_done_cb) |
: plugin_(plugin), |
pp_instance_(pp_instance), |
main_service_runtime_(main_service_runtime), |
@@ -260,7 +246,7 @@ ServiceRuntime::ServiceRuntime(Plugin* plugin, |
reverse_service_(NULL), |
anchor_(new nacl::WeakRefAnchor()), |
rev_interface_(new PluginReverseInterface(anchor_, pp_instance, this, |
- init_done_cb, crash_cb)), |
+ init_done_cb)), |
start_sel_ldr_done_(false), |
start_nexe_done_(false), |
nexe_started_ok_(false), |
@@ -488,24 +474,22 @@ bool ServiceRuntime::StartNexeInternal() { |
} |
void ServiceRuntime::ReapLogs() { |
+ // TODO(teravest): Now that crashes are reported over Chrome IPC instead of |
Mark Seaborn
2014/08/28 20:58:39
Nit: "reported over" -> "detected via"
since the
teravest
2014/09/03 15:18:22
I've reworked this whole block since it was confus
|
+ // through the reverse service, allow the service runtime to crash itself |
Mark Seaborn
2014/08/28 20:58:39
Nit: "service runtime" -> "NaCl process" or "servi
teravest
2014/09/03 15:18:22
Done.
|
+ // when a module fails to start. |
Mark Seaborn
2014/08/28 20:58:39
I find this paragraph a bit confusing. It says "N
teravest
2014/09/03 15:18:22
Yes, that's what I meant by the TODO. Is it cleare
|
+ // |
+ // The reasoning behind the current code behavior (dependent on the service |
+ // runtime and reverse service) follows: |
// On a load failure the service runtime does not crash itself to |
// avoid a race where the no-more-senders error on the reverse |
// channel service thread might cause the crash-detection logic to |
// kick in before the start_module RPC reply has been received. So |
- // we induce a service runtime crash here. We do not release |
- // subprocess_ since it's needed to collect crash log output after |
- // the error is reported. |
+ // we induce a service runtime crash here. |
RemoteLog(LOG_FATAL, "reap logs\n"); |
- if (NULL == reverse_service_) { |
- // No crash detector thread. |
- NaClLog(LOG_ERROR, "scheduling to get crash log\n"); |
- // Invoking rev_interface's method is workaround to avoid crash_cb |
- // gets called twice or more. We should clean this up later. |
- rev_interface_->ReportCrash(); |
Mark Seaborn
2014/08/28 20:58:39
It took me a while to understand this change.
Bas
teravest
2014/09/03 15:18:22
Done.
|
- NaClLog(LOG_ERROR, "should fire soon\n"); |
- } else { |
- NaClLog(LOG_ERROR, "Reverse service thread will pick up crash log\n"); |
- } |
+ |
+ // TODO(teravest): Release subprocess_ here since it's no longer needed. It |
+ // was previously kept around to collect crash log output from the bootstrap |
+ // channel. |
} |
void ServiceRuntime::ReportLoadError(const ErrorInfo& error_info) { |