commit | a5f3a4ae66d3147c5733736f77f8bc0370311047 | [log] [tgz] |
---|---|---|
author | Ching-lin Yu <chinglinyu@google.com> | Fri Dec 10 04:23:18 2021 +0000 |
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | Fri Dec 10 04:23:18 2021 +0000 |
tree | 7005cdeaa667907734931360385be6a5164e2169 | |
parent | 42ec5d6ef4a9492fef1cf4fe45a7a1354e457cc7 [diff] | |
parent | 98979112f7f41cb4c33cfcdd9741fb1efcc4b154 [diff] |
Merge "trace_processor: extract actual argv0 from Chrome cmdline" am: 98979112f7 Original change: https://android-review.googlesource.com/c/platform/external/perfetto/+/1914587 Change-Id: I36d1a3d1beb351d8984d24c3fdc20cc1c54302e9
diff --git a/src/trace_processor/importers/proto/system_probes_parser.cc b/src/trace_processor/importers/proto/system_probes_parser.cc index 5072bad..952184a 100644 --- a/src/trace_processor/importers/proto/system_probes_parser.cc +++ b/src/trace_processor/importers/proto/system_probes_parser.cc
@@ -306,6 +306,14 @@ } else { auto raw_cmdline = proc.cmdline(); base::StringView argv0 = raw_cmdline ? *raw_cmdline : base::StringView(); + // Chrome child process overwrites /proc/self/cmdline and replaces all + // '\0' with ' '. This makes argv0 contain the full command line. Extract + // the actual argv0 if it's Chrome. + static const char kChromeBinary[] = "/chrome "; + auto pos = argv0.find(kChromeBinary); + if (pos != base::StringView::npos) { + argv0 = argv0.substr(0, pos + strlen(kChromeBinary) - 1); + } std::string cmdline_str; for (auto cmdline_it = raw_cmdline; cmdline_it;) {