From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jeremy Apthorp Date: Thu, 30 Apr 2020 17:04:13 -0700 Subject: breakpad: treat node processes as browser processes On Linux, to avoid the need to pass breakpad FDs to child node processes spawned by child_process.fork(), each child process must re-initialize breakpad independently, as a "browser" process. This patches //components/crash so that it will correctly report 'ptype=node' as a crash annotation. diff --git a/components/crash/core/app/breakpad_linux.cc b/components/crash/core/app/breakpad_linux.cc index 76993a9ec8dcd6c69cf3e58c49838264783a06c9..7b38b3bc102448b1c6f0663875ce305bc6e986ff 100644 --- a/components/crash/core/app/breakpad_linux.cc +++ b/components/crash/core/app/breakpad_linux.cc @@ -716,8 +716,13 @@ bool CrashDone(const MinidumpDescriptor& minidump, log_path[log_path_len] = '\0'; info.log_filename = log_path; #endif - info.process_type = "browser"; - info.process_type_length = 7; + if (g_is_node) { + info.process_type = "node"; + info.process_type_length = 4; + } else { + info.process_type = "browser"; + info.process_type_length = 7; + } info.distro = base::g_linux_distro; info.distro_length = my_strlen(base::g_linux_distro); info.upload = upload; @@ -2023,8 +2028,13 @@ void InitCrashReporter(const std::string& process_type) { process_type == kWebViewSingleProcessType || process_type == kBrowserProcessType || #endif + process_type == "node" || process_type.empty(); + if (process_type == "node") { + g_is_node = true; + } + #if !BUILDFLAG(IS_CHROMEOS_ASH) SetUploadURL(GetCrashReporterClient()->GetUploadUrl()); #endif