commit | cde1166afc9d1ce5d159738a859347ec9d4bbc57 | [log] [tgz] |
---|---|---|
author | Darshan Sen <raisinten@gmail.com> | Fri Jun 24 19:20:54 2022 +0530 |
committer | Copybara-Service <copybara-worker@google.com> | Fri Jun 24 08:46:31 2022 -0700 |
tree | bc4d3312ff5a13349921ef12bcf02dff47f604aa | |
parent | 915a7d565161cc1ef14a37100e175862efd5cd0d [diff] |
Reland "posix: Replace DoubleForkAndExec() with ForkAndSpawn()" This is a reland of 460943dd9a71dc76f68182a8ede766d5543e5341 Original change's description: > The DoubleForkAndExec() function was taking over 622 milliseconds to run > on macOS 11 (BigSur) on Intel i5-1038NG7. I did some debugging by adding > some custom traces and found that the fork() syscall is the bottleneck > here, i.e., the first fork() takes around 359 milliseconds and the > nested fork() takes around 263 milliseconds. Replacing the nested fork() > and exec() with posix_spawn() reduces the time consumption to 257 > milliseconds! > > See https://github.com/libuv/libuv/pull/3064 to know why fork() is so > slow on macOS and why posix_spawn() is a better replacement. > > Another point to note is that even base::LaunchProcess() from Chromium > calls posix_spawnp() on macOS - > https://source.chromium.org/chromium/chromium/src/+/8f8d82dea0fa8f11f57c74dbb65126f8daba58f7:base/process/launch_mac.cc;l=295-296 The reland isolates the change to non-Android POSIX systems because posix_spawn and posix_spawnp are available in Android NDK 28, but Chromium is building with version 23. Change-Id: I5a9253ad7d21a18dc74158d74bdec96beef78c20 Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3721655 Reviewed-by: Mark Mentovai <mark@chromium.org> Commit-Queue: Mark Mentovai <mark@chromium.org> GitOrigin-RevId: 1c37daa5acd500633cdffc7f6db61d8c6b32b771
Crashpad is a crash-reporting system.
Crashpad’s source code is hosted in a Git repository at https://chromium.googlesource.com/crashpad/crashpad.