Reland "mac: Forcibly disable Apple’s “Probabilistic Guard Malloc”" This reverts commit ee6030a99cc6044f3e88be52d65d23ed605f9952. Reason for revert: Relanding with a speculative fix for whatever went wrong on the mac64 bot. 14 tests in interactive_ui_tests began failing consistently on that bot when this initially landed (https://ci.chromium.org/ui/p/chrome/builders/ci/mac64/228377), and they recovered when this was reverted (https://ci.chromium.org/ui/p/chrome/builders/ci/mac64/228421). I was unable to reproduce those failures locally or in try jobs. I did experience a different set of interactive_ui_tests failures on mac_chromium_dbg_ng (https://ci.chromium.org/ui/p/chromium/builders/try/mac_chromium_dbg_ng/2711), and those failures persist with this updated patch with the speculative fix (https://ci.chromium.org/ui/p/chromium/builders/try/mac_chromium_dbg_ng/2712), but those test failures seem to appear on that bot whenever it runs interactive_ui_tests (https://ci.chromium.org/ui/p/chromium/builders/try/mac_chromium_dbg_ng/2700). The speculative fix is to set environment variables via LSEnvironment in Info.plist only for the browser .app. LSEnvironment is removed from the helper .app’s Info.plist. The thought is that interactive_ui_tests runs out of its own executable and not the browser .app, but does use the helper .app. By not setting MallocProbGuard=0 for the helper .app, it should experience no changes when running under interactive_ui_tests. Meanwhile, when running normally, MallocProbGuard=0 will be set in the environment even for helper processes by virtue of running as children of the browser process, which runs out of the browser .app whose Info.plist still contains LSEnvironment. MallocNanoZone is also removed from helper apps’ Info.plists according to the same logic. PWA stub .apps also retain LSEnvironment, because they are launched directly by users as the browser .app, and should follow the same logic. Original change's description: > Revert "mac: Forcibly disable Apple’s “Probabilistic Guard Malloc”" > > This reverts commit 340be9daf6487e9ead5565f74543cde8bdfc3aac. > > Reason for revert: Suspicious for causing consistent test failures on mac64 builder > i.e. https://ci.chromium.org/ui/p/chrome/builders/ci/mac64/228377/overview > > Bug: 414750473 > Original change's description: > > mac: Forcibly disable Apple’s “Probabilistic Guard Malloc” > > > > “Probabilistic Guard Malloc” is normally disabled for non-Apple > > executables when not running on Apple-internal OS builds. When > > restarting Chrome from the macOS-provided “quit unexpectedly” dialog > > after a browser crash, this malloc feature will be enabled, as observed > > on macOS 15.4.1. Code inspection shows that this may be a new behavior > > in macOS 15.3, although this is not dispositive, because only libmalloc > > source is public, and there are other OS components in the chain that > > are not. > > > > Chrome is unable to launch with this malloc feature enabled, and crashes > > during early startup, while loading the framework. From the user’s > > perspective, when choosing to restart Chrome from the OS crash dialog, > > this results in a secondary (and subsequent) crash. > > > > It’s possible to forcibly disable this malloc feature by environment > > variable. The environment variable can be set in the app’s Info.plist. > > While environment variables are only set from Info.plist when launched > > via Launch Services (and not, for example, from a shell), the launch > > from the macOS crash dialog does go through Launch Services, so this > > should be a complete fix. > > > > Bug: 414750473 > > Change-Id: I0a9aba7d1ea0b94327252a706ddba686799d4863 > > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6501000 > > Reviewed-by: Avi Drissman <avi@chromium.org> > > Commit-Queue: Mark Mentovai <mark@chromium.org> > > Reviewed-by: Marijn Kruisselbrink <mek@chromium.org> > > Reviewed-by: Leonard Grey <lgrey@chromium.org> > > Cr-Commit-Position: refs/heads/main@{#1454086} > > Bug: 414750473 > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Change-Id: I99f9434df068e8741ff15ca5b5ce6759b4df1e18 > Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6502113 > Auto-Submit: Nidhi Jaju <nidhijaju@chromium.org> > Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> > Owners-Override: Nidhi Jaju <nidhijaju@chromium.org> > Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> > Cr-Commit-Position: refs/heads/main@{#1454260} Bug: 414750473 Cq-Include-Trybots: luci.chromium.try:mac-official,mac11-arm64-rel,mac12-arm64-rel,mac13-arm64-rel,mac12-tests,mac13-tests,mac14-arm64-rel,mac14-tests,mac_chromium_dbg_ng,mac_chromium_11.0_rel_ng;luci.chrome.try:mac-chrome,mac-rel-ready Change-Id: I4e7f72983b49046415999642bcd9382c5df0daaf Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6505920 Reviewed-by: Marijn Kruisselbrink <mek@chromium.org> Commit-Queue: Mark Mentovai <mark@chromium.org> Reviewed-by: Leonard Grey <lgrey@chromium.org> Cr-Commit-Position: refs/heads/main@{#1455101}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
To check out the source code locally, don't use git clone! Instead, follow the instructions on how to get the code.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure.
For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.
If you found a bug, please file it at https://crbug.com/new.