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 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 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 -
8f8d82dea0:base/process/launch_mac.cc;l=295-296
Change-Id: I25c6ee9629a1ae5d0c32b361b56a1ce0b4b0fd26
Reviewed-on: 3641386
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
Fixes: https://github.com/electron/electron/issues/34321
Signed-off-by: Darshan Sen <raisinten@gmail.com>
* chore: bump chromium in DEPS to 103.0.5020.0
* chore: bump chromium in DEPS to 103.0.5022.0
* chore: bump chromium in DEPS to 103.0.5024.0
* chore: update patches
* 3587410: [Printing] Remove JobEventDetails
Ref: 3587410
* chore: bump chromium in DEPS to 103.0.5026.0
* chore: update patches
* 3577218: WebUI: Delete webui_resources.grd and related GN targets.
Ref: 3577218
* chore: bump chromium in DEPS to 103.0.5028.0
* chore: update patches
* 3579297: Convert UpdatePrintSettings() to use non-deprecated base::Value APIs.
Ref: 3579297
* 3560622: serial: Add SerialPort.forget() method
Ref: 3560622
* 3581708: Restore original display when moving from tab-fullscreen to browser-fullscreen.
Ref: 3581708
* chore: fix authorization flags lint error
* 3583363: Remove net wrappers around base/strings/escape.h
Ref: 3583363
* fixup! 3560622: serial: Add SerialPort.forget() method
Ref: 3560622
* 3587589: Reland "Propagate the MIME type from DownloadTargetDeterminer to DownloadItem"
Ref: 3587589
* 3584006: Remove IsRenderViewLive from content public
Ref: 3584006
* 3596174: [api] Remove APIs for resurrecting finalizers
Ref: 3596174
* 3368244: Hook SnapshotForContentAnalysis renderer API to scan system prints
Ref: 3368244
* chore: bump chromium in DEPS to 103.0.5030.0
* chore: update patches
* chore: bump chromium in DEPS to 103.0.5032.0
* chore: bump chromium in DEPS to 103.0.5034.0
* chore: bump chromium in DEPS to 103.0.5036.0
* chore: update patches
* 3586363: Introduce PrintRenderFrame.PrintWithParams() for batch printing to PDF
Ref: 3586363
* 3593199: Remove content::PermissionType references and replace them with blink::PermissionType
Ref: 3593199
* 3368244: Hook SnapshotForContentAnalysis renderer API to scan system prints
Ref: 3368244
* chore: lint
* chore: bump chromium in DEPS to 103.0.5038.0
* chore: update patches
* fixup! 3560622: serial: Add SerialPort.forget() method
* 3606495: mac screen capture: add metric
Ref: 3606495
* chore: bump chromium in DEPS to 103.0.5040.0
* chore: update patches
* 3590840: Add IPs to DnsOverHttpsServerConfig
3590840
* stub functions for ElectronSerialDelegate and SerialChooserController to fix link
* 3566412: [base] Remove base/android dependency on post_task.h and officially remove post_task.h!
Ref: 3566412
* 3347944: [content] No longer hand-off whole MainFunctionParams to BrowserMainParts
Ref: 3347944
* fixup! 3566412: [base] Remove base/android dependency on post_task.h and off…
e3ea3e1
…icially remove post_task.h!
* chore: update process_singleton patches for content::GetIOThreadTaskRunner({})
Ref: 2015655: [BrowserThread] Migrate co/pub/br and co/br/scheduler to the new API | 2015655
* chore: migrate base::DeleteSoon to content::GetUIThreadTaskRunner({})->DeleteSoon
Ref: 3566412
* chore: remove duplicate functions for RevokePortPermissionWebInitiated & GetPortInfo
* chore: migrate Linux/Windows methods off of post_task.h
Ref: 3566412
* 64908: Stop building legacy SwiftShader GL in Chromium
https://swiftshader-review.googlesource.com/c/SwiftShader/+/64908
* 3573245: Added Themed versions of RoundedRectBackground and RoundedRectBorder.
Ref: 3573245
* chore: bump chromium in DEPS to 103.0.5042.0
* chore: update patches
* 3571804: [api] Advance API deprecation for V8 version v10.2
3571804
* fixup! 3571804: [api] Advance API deprecation for V8 version v10.2
* build: fix run-clang-format extension matching
* lint
* fix windows build
* how is clang-format still not working for me
* chore: update patches
* 3623985: Replace ad-hoc SetPublicFirstPartySets calls with method in ContentBrowserClient.
3623985
* no need to implement WillProvidePublicFirstPartySets; the default is false
* 3601036: [QT] Introduce ui/views/linux_ui/linux_ui_factory.*
3601036
* 3583363: Remove net wrappers around base/strings/escape.h
3583363
* lint
* chore: bump chromium in DEPS to 103.0.5044.0
* fix conflicts
* chore: update patches
* upgrade nan
* pin version of nan in tests
* replace my hacky deprecated override fix with the fix from upstream
* revert runtime dcheck in v8
* pin nan version at root too
* refactor: tell gyp to use c++17 when building with our node
* Revert "refactor: tell gyp to use c++17 when building with our node"
This reverts commit 41a03a5799a8f40f31555d73d20ea865acfcd192.
* Undo the reversion of 41a03a5799a8f40f31555d73d20ea865acfcd192.
This reverts commit 54440abc598153bd7e259be4a908f0ecc0b33348.
* disable sequential/test-cpu-prof-kill for now
* also sequential/test-diagnostic-dir-cpu-prof
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Keeley Hammond <khammond@slack-corp.com>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: VerteDinde <vertedinde@electronjs.org>
Co-authored-by: Jeremy Rose <japthorp@slack-corp.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* fix: create singleton pipename from user & executable
* fix: use process id & main thread id for pipe name
* fix: write rand to file using WIN method
* fix: remove file rand, add user_name to pipe
* chore: style fixes, shorten program_name & user_name
* fix: remove user_name
* chore: bump chromium in DEPS to 102.0.4999.0
* 3576640: Set OOM handler during V8 initialization
3576640
* 3574964: Remove deprecated base::Value usage in print_settings_conversion code.
3574964
* 3570062: Replicate Active state to render process for all RenderViews.
3570062
* chore: fixup patch indices
* 3380402: Remove legacy SwiftShader
3380402
* 3570254: [Local Fonts] Rename permission name from FONT_ACCESS to LOCAL_FONTS.
3570254
* 3572172: Rename or remove several parameters involved in creation of MimeHandler streams
3572172
* fix: add missing base/bits include
* chore: fix lint
* chore: remove ia32 Linux support
* chore: patch out swift-format cipd dep on macOS
* build: apply patch better
* build: reset all caches
* build: update zip manifests to remove swiftshared libraries
Refs: 3380402
* Revert "build: update zip manifests to remove swiftshared libraries"
This reverts commit 6aeec01ef1a79425a7b7d8c1cfb131a26b91c494.
* Revert "3380402: Remove legacy SwiftShader"
This reverts commit 4c7eebbbf2d0a459cc192959e17ae20f970c2da2.
* build: remove unused swiftshader egl libraries
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
Co-authored-by: Samuel Attard <sattard@salesforce.com>
* chore: bump chromium in DEPS to 102.0.4975.0
* chore: bump chromium in DEPS to 102.0.4977.0
* chore: update patches
* Remove parameter of OnGpuProcessCrashed()
3543396
* hid: Add exclusionFilters option to requestDevice
3478175
* chore: bump chromium in DEPS to 102.0.4979.0
* chore: bump chromium in DEPS to 102.0.4981.0
* chore: update patches
* Deny notification/push permission for documents in non-standard StoragePartitions
3257305
* Improve FrameTreeNode tracking in URLLoaderNetworkContext
3341866
* fixup! Remove parameter of OnGpuProcessCrashed()
* chore: fix lint
* Reland "Use gfx::Insets[F]::TLBR() and gfx::Insets[F]::VH() in the rest of Chrome"
3554236
* chore: bump chromium in DEPS to 102.0.4983.0
* Ensure EyeDropperView does not access a destroyed window
3561542
* ci: don't delete dawn .git directory
83901: Adds a generated file with the dawn git hash encoded at build time. | https://dawn-review.googlesource.com/c/dawn/+/83901
* ci: update Windows toolchain
3550827: New toolchain for Windows 10 20348 SDK | 3550827
* chore: bump chromium in DEPS to 102.0.4985.0
* chore: update patches
* chore: bump chromium in DEPS to 102.0.4987.0
* chore: update patches
* 3563432: codehealth: remove uses of DictionaryValue in cbui/webui
3563432
* chore: update patches after rebase
* Use gfx::Insets[F]::TLBR() and gfx::Insets[F]::VH() in the rest of Chrome
3554236
* 3565724: Preserve "proper method names" as-is in error.stack.
3565724
* chore: bump chromium in DEPS to 102.0.4989.0
* chore: update patches
* fixup ci: don't delete dawn .git directory for Windows
* 3560843: Remove multi-parameter version of gfx::Rect[F]::Inset()
3560843
* 3572711: Remove unused IDS_PDF_TOOLTIP_ROTATE_CW resource.
3572711
* 3572926: Reland "[Sysroot] Switch to Debian Bullseye stable"
3572926
* build: fixup sysroots with electron specific dependencies
* fixup Remove multi-parameter version of gfx::Rect[F]::Inset()
* fixup 3565724: Preserve "proper method names" as-is in error.stack.
* fixup Remove multi-parameter version of gfx::Rect[F]::Inset()
* test: add spec for navigator.hid.requestDevice({ exclusionFilters: [...] }
* fixup 3565724: Preserve "proper method names" as-is in error.stack.
* ci: use python3 to get the windows toolchain profile
3525960: Explicitly run everything with python3 | 3525960
* chore: add diagnostic logging
* fix: try calling process.crash()
* chore: remove logging
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: deepak1556 <hop2deep@gmail.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* chore: bump chromium in DEPS to 102.0.4965.0
* chore: 3-way merge of chromium/printing.patch
* chore: update patch shear in chromium/picture-in-picture.patch
* chore: update patches
* 3101519: Window Placement: Prototype fullscreen companion window support
Xref: 3101519
build: add popup_preventer.cc, .h to our library. It's needed because
FullscreenController, we were already using, started aggregating a
PopupPreventer in 3101519.
* chore: bump chromium in DEPS to 102.0.4967.0
* Revert "3101519: Window Placement: Prototype fullscreen companion window support"
This reverts commit fc215cb99c464e939882ed3f5cf8e9874a8e3311.
Adding popup_preventer might not be the right solution; there are
cascading dependencies.
* 3551449: Add service-based usage for system print settings
Xref: 3551449
chore: fix code shear in patches/chromium/printing.patch
* chore: update patches
* chore: bump chromium in DEPS to 102.0.4969.0
* chore: update patches
* chore: bump chromium in DEPS to 102.0.4971.0
* chore: update fix_patch_out_permissions_checks_in_exclusive_access.patch
Refs 3101519
PopupunderPreventer is not useful in //electron since the window
attributes are controlled by the user via setWindowOpenHandler.
* chore: update patches
* Add FirstPartySetsHandler as a interface class in content API.
3503410
* Create a new MediaStreamRequestType for GetOpenDevice
3541939
* Support site isolation for <webview> tags in WebViewRendererState.
3537735
* ci: update xcode version
Refs 3544199https://developer.apple.com/documentation/screencapturekit/capturing_screen_content_in_macos
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: deepak1556 <hop2deep@gmail.com>
* fix: don't call X11 functions in file dialog and message box
* refactor: remove unused GtkUiPlatform declaration
* fix: set gtk darktheme only when running under X11
* fix: replace X11 window state watcher with implementation using ozone
* fix: make sure global menu barr is used only when supported
* fix: don't call X11 function in native window views under wayland
* style: fix lint issues
* fix: use GtkUiPlatform::ShowGtkWindow instead of gtk_window_present directly
* refactor: extract CreateGlobalMenuBar into separate function
* refactor: move checking for WaylandWindowDecorations inside class
* fix: check if we run under X11 only in ozone build
* refactor: drop including unused ui/base/ui_base_features.h header
* fix: modify ui_gtk_public_header.patch to also export gtk_ui.h
* fix: refactor guarding of X11 calls
- Introduce patch exposing new electron_can_call_x11 property
- Replace defined(USE_OZONE) with BUILDFLAG(OZONE_PLATFORM_X11) flags
* fix: remove the last remaining usage of USE_X11
* fix: usage of BUILDFLAG(OZONE_PLATFORM_X11) not building on non ozone
* fix: call UpdateWindowState from OnBoundsChanged only under X11
* chore: bump chromium in DEPS to 101.0.4911.0
* chore: bump chromium in DEPS to 101.0.4913.0
* chore: bump chromium in DEPS to 101.0.4915.0
* chore: bump chromium in DEPS to 101.0.4917.0
* chore: bump chromium in DEPS to 101.0.4919.0
* chore: bump chromium in DEPS to 101.0.4921.0
* chore: bump chromium in DEPS to 101.0.4923.0
* chore: bump chromium in DEPS to 101.0.4925.0
* chore: bump chromium in DEPS to 101.0.4927.0
* chore: bump chromium in DEPS to 101.0.4929.0
* chore: update patches
* chore: bump chromium in DEPS to 101.0.4931.0
* chore: update patches
* 3475388: Remove mojo::InterfacePtr<T> and mojo::InterfacePtrInfo<T>
Ref: 3475388
Actual fixes in 1824792: Migrate DisplayClient to the new Mojo types | 1824792
* 3503874: Remove base::size(), base::empty(), and base::data().
Ref: 3503874
* chore: reconcile patches with main rebase
* chore: bump chromium in DEPS to 101.0.4933.0
* chore: update patches
* 3329593: [Fenced Frame] Ensure to support external protocols in a fenced frame
Ref: 3329593
* 3503874: Remove base::size(), base::empty(), and base::data().
Ref: 3503874
* 3446451: Use forward decl of ImageSkiaRep in //ui/gfx/image/image_skia.h
Ref: 3446451
* 3499818: partition_alloc: Rename AllocFlags to AllocWithFlags
Ref: 3499818
* chore: bump chromium in DEPS to 101.0.4935.0
* chore: update patches
* 3463286: partition_alloc: Move PartitionAlloc into the own namespaces (15 of N)
Ref: 3463286
* 3506590: Reland "Support ChromeOS external protocol dialog for Fenced Frame navigations"
Ref: 3506590
* 3475388: Remove mojo::InterfacePtr<T> and mojo::InterfacePtrInfo<T>
Ref: 3475388
Actual fixes in 1880987: Convert URLLoaderReqeust from //content to new Mojo types | 1880987 The change in the roll started causing the legacy types to fail
* chore: missing SkRegion include
* 3499600: Introduce blink::WebCssOrigin
Ref: 3499600
* fixup!: 3503874: Remove base::size(), base::empty(), and base::data().
Ref: 3503874
* chore: bump chromium in DEPS to 101.0.4937.0
* chore: update patches
* 3500826: [locales] Refactor locales for ios
Ref: 3500826
* 3509531: Make some public Blink media files private
Ref: 3509531
* 3497377: bluetooth: Add BluetoothDevice.forget()
Ref: 3497377
* chore: bump chromium in DEPS to 101.0.4939.0
* chore: bump chromium in DEPS to 101.0.4941.0
* 3514804: Deprecate all existing uses of mojo_base.mojom.{Dictionary,List}Value.
Ref: 3514804
* 3502592: Delete PPAPI init/shutdown code in //pdf.
Ref: 3502592
* chore: update patches
* fixup! 3502592: Delete PPAPI init/shutdown code in //pdf.
* chore: bump chromium in DEPS to 101.0.4943.0
* chore: fix lint, remove unneeded headers
* fixup! 3475388: Remove mojo::InterfacePtr<T> and mojo::InterfacePtrInfo<T>
* update mojo calls in offscreen patch
* update hunspell filenames
* chore: bump chromium in DEPS to 101.0.4945.0
* chore: update patches
* fix offscreen patch again
* chore: bump chromium in DEPS to 101.0.4947.0
* chore: update patches
* chore: bump chromium in DEPS to 101.0.4949.0
* support unseasoned pdf
* update patches
* chore: update patches
* chore: [IWYU] include missing skia headers
* chore: bump chromium in DEPS to 101.0.4951.0
* chore: update patches
* 3457645: media: Remove IsKeySystemsUpdateNeeded()
3457645
* chore: bump chromium in DEPS to 102.0.4952.2
* chore: update patches
* 3488672: Add documentId as a parameter in tabs.connect() and tabs.sendMessage().
Ref: 3488672
* 3508375: Fix an issue dangerous dialog is not shown for some apk download
Ref: 3508375
* chore: bump chromium in DEPS to 102.0.4953.0
* chore: update patches
* 3510189: Harden up drag and drop support across same-process boundaries.
Ref: 3510189
* 3526815: Remove hardcoded colors from chrome/browser/ui/views/overlay/.
Ref: 3526815
* chore: bump chromium in DEPS to 102.0.4955.0
* build: add af and ur locale to manifests
3498914 [locales] Add af and ur to desktop
Ref: 3498914
* fixup! build: add af and ur locale to manifests
* chore: bump chromium in DEPS to 102.0.4957.0
* 3529090: gin: set JS flags before v8 initialization
Xref: 3529090
chore: fix code shear in chromium/gin_enable_disable_v8_platform.patch
* chore: update patches
* 3536433: [network] Rename data_path and http_cache_path from _path to _directory.
Xref: 3536433
* 3111565: Relocated Page.printToPDF implementation to //components
Xref: 3111565
refactor: inject E args to PrintRequestedPages() and ScriptedPrintCallback
TODO: currently passes a placeholder for job_settings. We have other
code paths that inject settings from electron_api_web_contents.cc.
Should those be injected here as well? (CC @codebytere)
* fixup! 3111565: Relocated Page.printToPDF implementation to //components
* fixup! 3111565: Relocated Page.printToPDF implementation to //components
* 3520025: Make "libcxx_abi_unstable" not a gn arg
Xref: 3520025
build: since it is no longer a gn arg, patch it in
* chore: change usages of std::vector with const elements (#33373)
* chore: bump chromium in DEPS to 102.0.4959.0
* chore: update patches
* build: iwyu base/threading/platform_thread.h
* 3525774: Add GPSForCurrentDocument() into PermissionControllerDelegate.
Xref: 3525774
refactor: copy upstream impl of GetPermissionStatusForCurrentDocument into +ElectronPermissionManager
* use gclient_gn_args_from instead of hand-copying
* checkout mac on mac
* chore: update patches
* Revert "checkout mac on mac"
This reverts commit fe9ccf49ec6139868ccf2272c2016cefa3f32769.
* fixup! 3525774: Add GPSForCurrentDocument() into PermissionControllerDelegate.
* fixup! 3457645: media: Remove IsKeySystemsUpdateNeeded()
add nogncheck
* fix: set .eslintrc.json to root to avoid cascade to chromium eslintrc
* Xref: 6dfdf79b8c
Xref: https://reviews.llvm.org/D101458
Upstream added a CMakeLists.txt in an include dir ¯\_(ツ)_/¯ and
so it must be enumerated in filenames.libcxxabi.gni
* 3511268: Remove unused headers from cxx17_backports.h
3511268
use std::size instead of base::size
* iwyu: SkPaint
3488428: [includes] Fix transitive includes of SkImageEncoder
* chore: [IWYU] include missing skia headers
* fixup! 3511268: Remove unused headers from cxx17_backports.h
* chore: bump chromium in DEPS to 102.0.4961.0
* chore: update patches
* fixup! 3475388: Remove mojo::InterfacePtr<T> and mojo::InterfacePtrInfo<T>
chore: remove unused #include
* fixup! 3510189: Harden up drag and drop support across same-process boundaries. | 3510189
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Keeley Hammond <khammond@slack-corp.com>
Co-authored-by: VerteDinde <vertedinde@electronjs.org>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: Jeremy Rose <nornagon@nornagon.net>
Co-authored-by: VerteDinde <keeleymhammond@gmail.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
Co-authored-by: David Sanders <dsanders11@ucsbalum.com>
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
* fix: initialize asar support in worker threads
Use `ObjectWrap` instead of gin's Wrap in `electron_api_asar.cc` because
gin isn't fully initialized (and apparently not possible to initialize
without ruining the isolate configuration and array buffer allocator) in
worker threads. In the worker thread call `setupAsarSupport` just as we
do for the main process.
* Update lib/asar/fs-wrapper.ts
Co-authored-by: Darshan Sen <raisinten@gmail.com>
* Update patches/node/worker_thread_add_asar_support.patch
Co-authored-by: Darshan Sen <raisinten@gmail.com>
* Add a test
Co-authored-by: Darshan Sen <raisinten@gmail.com>
Co-authored-by: Fedor Indutny <79877362+indutny-signal@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* fix: use stricter options in SecStaticCodeCheckValidity
* Update patches/squirrel.mac/fix_use_kseccschecknestedcode_kseccsstrictvalidate_in_the_sec.patch
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>