|author||Darshan Sen <email@example.com>||Fri Jun 24 19:20:54 2022 +0530|
|committer||Copybara-Service <firstname.lastname@example.org>||Fri Jun 24 08:46:31 2022 -0700|
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 <email@example.com> Commit-Queue: Mark Mentovai <firstname.lastname@example.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.