| Index: base/trace_event/process_memory_totals_dump_provider.cc
|
| diff --git a/base/trace_event/process_memory_totals_dump_provider.cc b/base/trace_event/process_memory_totals_dump_provider.cc
|
| index a8617207dcfc35350496ebf7b27c8d758c891679..5f74d1efa00b42e40ebd3bdb4f6e0eb6f30ef4e1 100644
|
| --- a/base/trace_event/process_memory_totals_dump_provider.cc
|
| +++ b/base/trace_event/process_memory_totals_dump_provider.cc
|
| @@ -27,26 +27,24 @@ uint64 ProcessMemoryTotalsDumpProvider::rss_bytes_for_testing = 0;
|
|
|
| namespace {
|
|
|
| -ProcessMetrics* CreateProcessMetricsForCurrentProcess() {
|
| +ProcessMetrics* CreateProcessMetrics(ProcessHandle process) {
|
| #if !defined(OS_MACOSX) || defined(OS_IOS)
|
| - return ProcessMetrics::CreateProcessMetrics(GetCurrentProcessHandle());
|
| + return ProcessMetrics::CreateProcessMetrics(process);
|
| #else
|
| - return ProcessMetrics::CreateProcessMetrics(GetCurrentProcessHandle(), NULL);
|
| + return ProcessMetrics::CreateProcessMetrics(process, NULL);
|
| #endif
|
| }
|
| } // namespace
|
|
|
| // static
|
| -ProcessMemoryTotalsDumpProvider*
|
| -ProcessMemoryTotalsDumpProvider::GetInstance() {
|
| - return Singleton<
|
| - ProcessMemoryTotalsDumpProvider,
|
| - LeakySingletonTraits<ProcessMemoryTotalsDumpProvider>>::get();
|
| +scoped_ptr<ProcessMemoryTotalsDumpProvider>
|
| +ProcessMemoryTotalsDumpProvider::CreateForProcess(ProcessHandle process) {
|
| + return make_scoped_ptr(new ProcessMemoryTotalsDumpProvider(process));
|
| }
|
|
|
| -ProcessMemoryTotalsDumpProvider::ProcessMemoryTotalsDumpProvider()
|
| - : process_metrics_(CreateProcessMetricsForCurrentProcess()) {
|
| -}
|
| +ProcessMemoryTotalsDumpProvider::ProcessMemoryTotalsDumpProvider(
|
| + ProcessHandle process)
|
| + : process_(process), process_metrics_(CreateProcessMetrics(process)) {}
|
|
|
| ProcessMemoryTotalsDumpProvider::~ProcessMemoryTotalsDumpProvider() {
|
| }
|
| @@ -64,9 +62,8 @@ bool ProcessMemoryTotalsDumpProvider::OnMemoryDump(const MemoryDumpArgs& args,
|
| #if !defined(OS_IOS)
|
| peak_rss_bytes = process_metrics_->GetPeakWorkingSetSize();
|
| #if defined(OS_LINUX) || defined(OS_ANDROID)
|
| - if (kernel_supports_rss_peak_reset) {
|
| - // TODO(ssid): Fix crbug.com/461788 to write to the file from sandboxed
|
| - // processes.
|
| + // This file cannot be wriiten from other processes. So, do not try.
|
| + if (kernel_supports_rss_peak_reset && process_ == GetCurrentProcessHandle()) {
|
| int clear_refs_fd = open("/proc/self/clear_refs", O_WRONLY);
|
| if (clear_refs_fd > 0 &&
|
| WriteFileDescriptor(clear_refs_fd, kClearPeakRssCommand,
|
|
|