electron/patches/chromium/crashpad_pid_check.patch

39 строки
1.8 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Cheng Zhao <zcbenz@gmail.com>
Date: Tue, 4 Jun 2019 11:30:12 +0900
Subject: crashpad_pid_check.patch
When both browser process and renderer process are connecting to the pipe,
the API may return the PID of browser process as real_pid, which is different
from the PID of renderer process.
This is caused by the crashReporter getting started after the sanbox, after
we redesign crashReporter's API to make it alwasy start before the
sanbox, we can remove this patch.
See following links for more:
https://github.com/electron/electron/pull/18483#discussion_r292703588
https://github.com/electron/electron/pull/18483#issuecomment-501090683
diff --git a/third_party/crashpad/crashpad/util/win/exception_handler_server.cc b/third_party/crashpad/crashpad/util/win/exception_handler_server.cc
index 2593ff2de0327c393c30cae9962a329c5e27b64e..e89b8ff675bed2fa65263ea451d40995e0b010b7 100644
--- a/third_party/crashpad/crashpad/util/win/exception_handler_server.cc
+++ b/third_party/crashpad/crashpad/util/win/exception_handler_server.cc
@@ -448,9 +448,16 @@ bool ExceptionHandlerServer::ServiceClientConnection(
DWORD real_pid = 0;
if (get_named_pipe_client_process_id(service_context.pipe(), &real_pid) &&
message.registration.client_process_id != real_pid) {
+ // Electron: When both browser process and renderer process are connecting
+ // to the pipe, the API may return the PID of browser process as real_pid,
+ // which is different from the PID of renderer process.
+ //
+ // I don't understand why Chromium does not have this issue.
+#if 0
LOG(ERROR) << "forged client pid, real pid: " << real_pid
<< ", got: " << message.registration.client_process_id;
return false;
+#endif
}
}