Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(199)

Unified Diff: components/nacl/browser/nacl_process_host.cc

Issue 469423002: NaCl: Send fatal log messages via shared memory. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/nacl/browser/nacl_process_host.cc
diff --git a/components/nacl/browser/nacl_process_host.cc b/components/nacl/browser/nacl_process_host.cc
index 7005a664553fe995ebeae7f622af214b9ecfbe53..2da1995e14baa55ed8fbf644817247b8d3c2cafe 100644
--- a/components/nacl/browser/nacl_process_host.cc
+++ b/components/nacl/browser/nacl_process_host.cc
@@ -336,6 +336,11 @@ NaClProcessHost::~NaClProcessHost() {
NaClBrokerService::GetInstance()->OnLoaderDied();
}
#endif
+
+ if (base::SharedMemory::IsHandleValid(crash_info_shmem_plugin_handle_))
+ base::SharedMemory::CloseHandle(crash_info_shmem_plugin_handle_);
Mark Seaborn 2014/08/17 20:13:45 Is this a handle in another process's handle names
teravest 2014/08/18 16:16:26 Good point. I've changed this to only share the sh
+ if (base::SharedMemory::IsHandleValid(crash_info_shmem_renderer_handle_))
+ base::SharedMemory::CloseHandle(crash_info_shmem_renderer_handle_);
}
void NaClProcessHost::OnProcessCrashed(int exit_status) {
@@ -474,6 +479,18 @@ void NaClProcessHost::Launch(
SetCloseOnExec(pair[1]);
}
+ // Create a shared memory region that the renderer and plugin share for
+ // reporting crash information.
+ {
+ base::SharedMemory crash_info_shmem;
+ if (crash_info_shmem.CreateAnonymous(kNaClCrashInfoShmemSize)) {
+ crash_info_shmem.ShareToProcess(process_->GetData().handle,
Mark Seaborn 2014/08/17 20:13:45 Should this check for an error?
teravest 2014/08/18 16:16:26 I've added error checking at the ShareToProcess()
+ &crash_info_shmem_plugin_handle_);
+ crash_info_shmem.ShareToProcess(nacl_host_message_filter_->PeerHandle(),
+ &crash_info_shmem_renderer_handle_);
+ }
+ }
+
// Launch the process
if (!LaunchSelLdr()) {
delete this;
@@ -742,9 +759,11 @@ bool NaClProcessHost::ReplyToRenderer(
trusted_channel_handle,
manifest_service_channel_handle,
base::GetProcId(data.handle),
- data.id),
+ data.id,
+ crash_info_shmem_renderer_handle_),
std::string() /* error_message */);
internal_->socket_for_renderer = NACL_INVALID_HANDLE;
+ crash_info_shmem_renderer_handle_ = base::SharedMemory::NULLHandle();
return true;
}
@@ -900,6 +919,9 @@ bool NaClProcessHost::StartNaClExecution() {
params.nexe_file = IPC::TakeFileHandleForProcess(nexe_file_.Pass(),
process_->GetData().handle);
+ params.crash_info_shmem_handle = crash_info_shmem_plugin_handle_;
+ crash_info_shmem_plugin_handle_ = base::SharedMemory::NULLHandle();
+
process_->Send(new NaClProcessMsg_Start(params));
return true;
}

Powered by Google App Engine
This is Rietveld 408576698