Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: performance problem in crashReporter.start() on macOS #34639

Commits on Jun 20, 2022

  1. fix: performance problem in crashReporter.start() on macOS

    This change reduces the duration of crashReporter.start() on Intel macOS
    from 622 milliseconds to 257 milliseconds!
    
    Backports https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3641386
    
      posix: Replace DoubleForkAndExec() with ForkAndSpawn()
    
      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 libuv/libuv#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
    
      Change-Id: I25c6ee9629a1ae5d0c32b361b56a1ce0b4b0fd26
      Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3641386
      Reviewed-by: Mark Mentovai <mark@chromium.org>
      Commit-Queue: Mark Mentovai <mark@chromium.org>
    
    Fixes: #34321
    Signed-off-by: Darshan Sen <raisinten@gmail.com>
    RaisinTen authored and electron-bot committed Jun 20, 2022
    Copy the full SHA
    3f08bdc View commit details
    Browse the repository at this point in the history
  2. Trigger Build

    jkleinsc committed Jun 20, 2022
    Copy the full SHA
    2c4cefc View commit details
    Browse the repository at this point in the history