2441 Commits

Author SHA1 Message Date
Justin Cohen
e2acb9f332 Fix iOS test when run on arm64 under x86_64 translation
Checking for GenuineIntel will fail under translation mode.

Bug: 398836269
Change-Id: Ib431d16db010d17ed74820b8baf1f6de2652e1f9
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/6299753
Commit-Queue: Justin Cohen <justincohen@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
2025-02-24 14:47:55 -08:00
Nico Weber
73b3e4f258 Enable clang by default on Windows
Roll crashpad/third_party/mini_chromium/mini_chromium/ 08d490553..a7df8840e (1 commit)

08d490553b..a7df8840eb

$ git log 08d490553..a7df8840e --date=short --no-merges --format='%ad %ae %s'
2025-02-24 thakis Enable clang by default on Windows

Created with:
  roll-dep crashpad/third_party/mini_chromium/mini_chromium

Bug: 384682775
Change-Id: I454ad33b168c0b999664c55ac30ce19e7f4c4072
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/6298935
Commit-Queue: Nico Weber <thakis@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
2025-02-24 14:00:43 -08:00
Nico Weber
d7aeda9fca Prepare for building with clang
* Switch to Chromium's clang package on Windows. Fuchsia's clang
  package uses symlinks, which don't Just Work. See comment 3
  on the linked bug for details.

* Also tweak the installed path of the clang package to use
  win-amd64 instead of windows-amd64 to match gn's host_os
  variable, which is needed by the mini_chromium change in the
  roll mentioned below.

* Add `__declspec(noinline)` to sources of some end-to-end test
  binaries where the test expects a certain stack layout that's
  perturbed by inlining

* self_destroying_test_program.cc failed with Access Violation
  instead of with Breakpoint. I'm not 100% sure what's happening
  there as I couldn't reproduce it on my machine. The test uses
  VirtualFree(..., MEM_DECOMMIT) to make parts of the stack unreadable
  to make sure crashpad can handle that. My theory is that clang
  optimized out the call to `_alloca()`, which results in not enough
  of the stack being around for VirtualFree() to be able to decommit.
  https://geidav.wordpress.com/tag/reserved-memory/#:~:text=How%20does%20Windows%20manage%20stack%20memory%3F
  and https://godbolt.org/z/YdbYdKeMh suggest that this theory is
  not completely off -- but the
  `[[maybe_unused]] volatile void* do_not_optimize_away` bit feels
  homeopathic. And yet, with it this seems to pass CQ (see try results
  at patch sets 12 and 20) and without it it doesn't (see patch set 19).
  Maybe this was just luck and the test still feels flakily!
  (The linker's `/STACK` defaults to 1MB stack reserved and 4K
  committed -- 4K kind of seems like it should be enough for that
  VirtualFree call to succeed if that really is the problem.)
  So this part is a bit experimental.

Anyways, nothing uses clang yet, so no behavior change at this point
(other than `gclient sync` downloading less stuff and not failing
by default on Windows).

Includes a one-rev mini_chromium roll:

12ef786772..08d490553b

$ git log 12ef78677..08d490553 --date=short --no-merges --format='%ad %ae %s'
2025-02-13 thakis Prepare mini_chromium for using clang on Windows

Bug: 384682775
Change-Id: I33b54acf18cb6eadfd2167c76c0b4a5824efa64d
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/6242577
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Nico Weber <thakis@chromium.org>
2025-02-24 11:37:06 -08:00
Nico Weber
db25cdc030 Remove a NOTREACHED() after a __builtin_trap()
__builtin_trap() is already noreturn, so no need to put a
NOTREACHED() after it.

No behavior change.

Bug: chromium:393924694
Change-Id: Ib93b429d8ef7cfe8fb59c4b9e9b8afced06b2ac2
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/6298671
Commit-Queue: Nico Weber <thakis@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
2025-02-24 10:05:26 -08:00
Mark Mentovai
85ecbd2a77 Fix SyntaxWarning in build/run_tests.py
Use r-strings for all regular expressions.

Fixes these warnings experienced with Python 3.12
(https://github.com/python/cpython/issues/98401,
https://github.com/python/cpython/pull/99011,
https://docs.python.org/3/whatsnew/3.12.html#other-language-changes
point 2):

run_tests.py:200: SyntaxWarning: invalid escape sequence '\d'
  FINAL_LINE_RE = re.compile('status=(\d+)$')
run_tests.py:441: SyntaxWarning: invalid escape sequence '\*'
  re.match('^\* daemon .+ \*$', line) or line == ''):

Change-Id: I71ddfb1a2ca62654378ae67a99e9aeb4ce7b7394
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/6254063
Commit-Queue: Mark Mentovai <mark@chromium.org>
Reviewed-by: Nico Weber <thakis@chromium.org>
2025-02-11 11:22:07 -08:00
Nico Weber
4a227b2d7c Add a newline to scoped_registry_key.h
Fixes a -Wnewline-eof warning with clang.

Bug: 384682775
Change-Id: I45e5285645b408d126893a4a34fd462ca5bde15a
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/6248264
Commit-Queue: Nico Weber <thakis@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
2025-02-10 07:52:32 -08:00
Peter Boström
312919d97f Remove traces of third_party/gyp
gyp is no longer used in/by crashpad (since crrev.com/c/3034984) and
isn't referenced in DEPS.

Bug: 374516744
Change-Id: I06bf6d05457a9f0a084db8ec2da75b6e07780b41
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/6168877
Commit-Queue: Peter Boström <pbos@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
2025-02-09 19:24:27 -08:00
Sorin Jianu
04bcaa9372 remove set noparent from OWNERS file
Change-Id: Idf5a6c3dbf18f78cac8e71981472729d6077d4f2
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/6210657
Commit-Queue: Sorin Jianu <sorin@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
2025-01-29 13:28:08 -08:00
Nico Weber
9e8334fd28 Always pull clang on Windows
Not used for anything yet.

Bug: chromium:384682775
Change-Id: I00a379756633b0edc849fa1d8bbd6e81f44a6ab1
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/6214931
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Nico Weber <thakis@chromium.org>
2025-01-29 10:33:22 -08:00
Mark Mentovai
e428b3ad13 doc: Update to Doxygen 1.13.2, fix Doxygen warnings, modernize somewhat
doc/support/crashpad.doxy is updated with:

```
% doxygen -u doc/support/crashpad.doxy
[…]
% doxygen -v
1.13.2
```

Additional updates to doc/support/crashpad.doxy are made:
 - The settings for `DISABLE_INDEX` and `GENERATE_TREEVIEW` are updated,
   as Doxygen’s defaults have changed. This switches from the
   top-of-page index to the side-of-page tree view.
 - The TODO and Deprecated sections have become more prominent under the
   side-of-page tree view than they were with the top-of-page index, and
   they’re not very useful in Crashpad documentation, so they’re
   disabled by setting `GENERATE_TODOLIST` and `GENERATE_DEPRECATEDLIST`
   appropriately. The similar (but unused in Crashpad)
   `GENERATE_TESTLIST` and `GENERATE_BUGLIST` are also disabled.
 - `USE_DOT` is now set, to use `dot` from GraphViz to generate SVG
   diagrams. These look better than the PNGs that Doxygen generated
   without `dot`. `DOT_COMMON_ATTR` and `DOT_EDGE_ATTR` are set to make
   the fonts used in GraphViz-generated SVGs match those used in
   Doxygen-generated HTML/CSS.
 - `EXCLUDE` has been updated to drop directories that no longer exist
   (compat/non_cxx11_lib) and add ones that now do (compat/android,
   compat/ios, and compat/linux).
 - Some values that were otherwise unused in doc/support/crashpad.doxy
   are set back to their default values. The differences from the
   default configuration are shown with `doxygen -x
   doc/support/crashpad.doxy`, and a configuration template with default
   values can be generated for inspection with `doxygen -g
   /tmp/template.doxy`. The tags affected are:
    - `MATHJAX_RELPATH`, unused since `USE_MATHJAX` is `NO`.
    - `LATEX_CMD_NAME` and `LATEX_BIB_STYLE`, unused since `USE_LATEX`
      is `NO`).
    - `EXCLUDE_PATTERNS`, unused since `EXCLUDE_PATH` is empty.

doc/support/doxygen_crashpad.css is updated to change the non-monospaced
font from Open Sans to Noto Sans. It is also updated to use the CSS
properties Doxygen defines for the purpose, rather than monkeying around
with custom selectors. The properties can be discovered by running
`doxygen -w html header.html footer.html customdoxygen.css
doc/support/crashpad.doxy` and reviewing customdoxygen.css.

doc/support/generate.sh is updated to further execute
doc/support/generate_doxygen.py by invoking directly and relying on its
`#!/usr/bin/env python3` line rather than invoking via `python`, which
is no longer available on many systems. doc/support/generate_doxygen.py
has already been Python 3-compatible since f88a116c0e2e
(https://chromium-review.googlesource.com/c/3542572, 2022-03-23).

Finally, there are a number of changes to fix Doxygen warnings produced
by the new Doxygen version or because of new code that has not yet been
run through Doxygen during a test run.

Change-Id: I436688b16530cb0a07dbf89d32601fff689ac2f2
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/6180234
Reviewed-by: Justin Cohen <justincohen@chromium.org>
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
2025-01-23 10:45:59 -08:00
Sorin Jianu
1e81dd5815 crashpad: fix missing . when appending crash report extension
Change-Id: I32e2fe8cd64db04256e35874b91b4162165326ef
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/6172933
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Sorin Jianu <sorin@chromium.org>
2025-01-23 10:17:46 -08:00
Mark Mentovai
0e548cc670 OWN Crashpad
Includes an update of mini_chromium to
12ef786772d9a73751e2d0f3ef9c792b09c386b5.

12ef786772d9 OWN mini_chromium

Bug: 390190633
Change-Id: Icfe39a08dc439125c53cb7da1ed7ef69850de924
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/6177891
Reviewed-by: Justin Cohen <justincohen@chromium.org>
Reviewed-by: Joey Scarr <jsca@google.com>
Commit-Queue: Mark Mentovai <mark@chromium.org>
2025-01-21 14:24:21 -08:00
Chris Davis
c6d912dac1 Add STARTF_FORCEOFFFEEDBACK to prevent busy cursor on process launch
When starting or restarting Chromium on Windows, we see the busy cursor
briefly.  This is because crashpad does not specify
STARTF_FORCEOFFFEEDBACK in the CreateProcess call.  This is similar to
other changes in Chromium for child processes to avoid the busy cursor.

Bug: 389978731
Change-Id: Ib95cd3b6ce13e3170324e63b43e46a376affc7c8
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/6173930
Reviewed-by: Will Harris <wfh@google.com>
Commit-Queue: Chris Davis <chrdavis@microsoft.com>
Reviewed-by: Peter Boström <pbos@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
Reviewed-by: Will Harris <wfh@chromium.org>
2025-01-16 16:18:20 -08:00
Leonard Grey
a0025ad44b Roll crashpad/third_party/mini_chromium/mini_chromium/ 63057a19a..22f743de4 (1 commit)
63057a19a3..22f743de47

$ git log 63057a19a..22f743de4 --date=short --no-merges --format='%ad %ae %s'
2024-12-17 lgrey Remove distutils dependency

Created with:
  roll-dep crashpad/third_party/mini_chromium/mini_chromium

Bug: None
Change-Id: I3b3628a938840416bf0044ae9d0f3de14f13e0ed
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/6096395
Commit-Queue: Leonard Grey <lgrey@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
2024-12-17 14:04:41 -08:00
Peter Kasting
6419a2e697 Make use of base::fixed_extent<>.
Bug: none
Change-Id: Ia07ebfdd5927e545e3c19b98dc545e7f75ef46ac
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/6091638
Commit-Queue: Peter Kasting <pkasting@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
2024-12-13 14:14:57 -08:00
Peter Kasting
4826f5a3b0 Roll crashpad/third_party/mini_chromium/mini_chromium/ c081fd005..63057a19a (3 commits)
c081fd005b..63057a19a3

$ git log c081fd005..63057a19a --date=short --no-merges --format='%ad %ae %s'
2024-12-12 pkasting Fix template param shadowing.
2024-12-12 pkasting Add fixed_extent to base::span.
2024-11-12 mark #include <stddef.h> for size_t

Created with:
  roll-dep crashpad/third_party/mini_chromium/mini_chromium

Change-Id: I47f53d3861147f2d2c7923dc2752fe49796ceda0
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/6091637
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Peter Kasting <pkasting@chromium.org>
2024-12-12 13:14:23 -08:00
Jesse McKenna
66a7812a40 Add .vscode to .gitignore
VS Code creates a .vscode/ directory in the top level of the repo
to hold config files.

Adding it to .gitignore will make it easier to develop crashpad using
VS Code.

Change-Id: I7afbbbf8ed6c017edc0299a18bf7ad0c11407b93
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/6013035
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Jesse McKenna <jessemckenna@google.com>
2024-11-26 17:51:15 +00:00
Nico Weber
3f1b84197b win: Include stddef.h for offsetof()
A future libc++ revision will stop providing this include transitively.

Bug: 376278210
Change-Id: I79460933ed915bc601278a6d75f2c2ced1130440
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/6049220
Commit-Queue: Nico Weber <thakis@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
2024-11-25 19:22:36 +00:00
Mark Mentovai
3b0a429371 Fix #includes
- Where std::nullptr_t is used (in namespace std), #include <cstddef>,
   even if it appears alongside <stddef.h> because types like intptr_t
   are used (in the root namespace).
 - Where math library functions are used, #include <cmath> to get and
   use the versions of functions in namespace std which are overloaded
   by argument type, such as std::isinf and std::isnan.

third_party is excluded.

Change-Id: Ic9c143f407e5a9c5cff4098cf566ba5caf4bf6d8
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/6021439
Commit-Queue: Mark Mentovai <mark@chromium.org>
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2024-11-14 17:06:54 +00:00
Peter Boström
65a45013d0 Replace CHECK(false) instances
In most cases NOTREACHED() is now a better option. Also performs
dead-code removal.

Bug: 40122554, 40580068
Change-Id: I2deffa59d375db7813ea6779b1d387718d5c62c7
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/6013409
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Peter Boström <pbos@chromium.org>
2024-11-13 18:21:54 +00:00
Nico Weber
02d094f3bb win: IWYU for __argc, __wargv
Bug: chromium:376296991
Change-Id: Iad1a2d59ceb444360f7dad407fdfe11f6f1aac69
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/5991037
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Nico Weber <thakis@chromium.org>
2024-11-05 16:26:33 +00:00
Takuto Ikuta
b8937c6cb4 tools: fix missing include for EXIT_{SUCCESS,FAILURE}
Bug: 375980422
Change-Id: Ia3afad0d2a8bf701f783720554ca8887a34b6fda
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/5969699
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Takuto Ikuta <tikuta@chromium.org>
2024-10-28 12:18:32 +00:00
Peter Boström
6c57c083e6 Fix -Wsign-compare in CrashReportDatabaseTest
Bug: crashpad:42310127
Change-Id: I8a060afd6d976379064c4177a40b337942252087
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/5951643
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Peter Boström <pbos@chromium.org>
2024-10-22 06:14:14 +00:00
Peter Boström
70ccb76751 Accept longer Settings::Data structs
This attempts to be somewhat forward-compatible with upcoming additions
to the Data struct, most importantly to not lose the client ID if we
ever need to downgrade / read data from a future crashpad version.

Bug: 42310127
Change-Id: Ic3914fdd8460f4f41e5bb523d5c52361767880dd
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/5915193
Reviewed-by: Mark Mentovai <mark@chromium.org>
Reviewed-by: Jesse McKenna <jessemckenna@google.com>
Commit-Queue: Peter Boström <pbos@chromium.org>
2024-10-22 02:23:41 +00:00
Brian Bosak
41c74f5622 [fuchsia] Remove duplicate LogSink routes
Routing LogSink manually is not needed, as this is done implicitly
through the client shard. Future CLs will update the routing used in
the shard, so it's necessary to cleanup these duplicate routes in
order to update the shards.

Bug: fuchsia:345827642
Change-Id: I529ab52412530382240d5c6276c1ef01ab349ecc
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/5941579
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Brian Bosak <bbosak@google.com>
2024-10-17 23:28:48 +00:00
Peter Boström
e05f665694 Roll cpp-httplib
This brings in https://github.com/yhirose/cpp-httplib/pull/1962 which
addresses -Wdeprecated-literal-operator.

Note that this contains v18.0 but is is 15 commits ahead as no release
has yet been made.

https://github.com/yhirose/cpp-httplib/compare/v0.18.0...0cc1ca9a8dcff402891582dda4da34a5d1687adc

Bug: chromium:373130005
Change-Id: Iada3259107e68d0eeabf20812df2d73e50daa750
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/5932425
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Peter Boström <pbos@chromium.org>
2024-10-15 23:17:41 +00:00
Jinyoung
1f24e58fd6 Make the network use proxy settings by default for Windows
Bug: chromium:369900059
Change-Id: I0b39a72938b3dc591ab8b4894a7a23a3deb4604d
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/5920056
Commit-Queue: Jinyoung Hur <hur.ims@navercorp.com>
Commit-Queue: Mark Mentovai <mark@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
2024-10-11 04:28:32 +00:00
Nico Weber
032bcc92fb Mark CrashWithoutDumping() as [[noreturn]]
No behavior change.

Bug: none
Change-Id: Ie838df830221a09d5401c6c73c8c889ea714940e
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/5905738
Reviewed-by: Peter Boström <pbos@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Nico Weber <thakis@chromium.org>
2024-10-04 04:08:15 +00:00
Peter Boström
030fdeb26e Roll crashpad/third_party/mini_chromium/mini_chromium/ e04c707cb..c081fd005 (3 commits)
e04c707cb3..c081fd005b

$ git log e04c707cb..c081fd005 --date=short --no-merges --format='%ad %ae %s'
2024-10-03 pbos Reimplement LAZY_STREAM with a switch
2024-10-03 pbos Fix LOG(FATAL) compile errors
2024-10-03 pbos Make LOG(FATAL) [[noreturn]]

Created with:
  roll-dep crashpad/third_party/mini_chromium/mini_chromium

Bug: chromium:40254046
Change-Id: I78c16747fbc5fbba8c2d17c16fec47e467b00189
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/5904404
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Peter Boström <pbos@chromium.org>
2024-10-04 02:18:17 +00:00
Josip Sokcevic
b39cca168f [DEPS] Rely on buildtools recursedep to fetch clang-format
buildtools has first party support to fetch clang-format so no longer
needed to use custom hooks.

Bug: chromium:336843583
Change-Id: I2c29ad9df579b605ff6e1d967da6502ffcd12faf
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/5586422
Commit-Queue: Josip Sokcevic <sokcevic@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
2024-09-23 22:32:52 +00:00
Justin Cohen
6d37f81ace ios: Remove OS filter for iOS simulator tests.
Bug: 365974437
Change-Id: I9ada04b3602487513ff14ef1124feb43ddfb323a
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/5855599
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Justin Cohen <justincohen@chromium.org>
2024-09-11 22:29:44 +00:00
Hzj_jie
e3abe1ed44 [fuchsia] remove unnecessary build args
The gn-args have default values in fuchsia-gn-sdk and not necessary
to be repeated - api-level 18 is also removed and breaks crashpad.

Bug: crashpad:365889763
Change-Id: I2a5a573158db434dd578c92455d0af6c96408d74
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/5854005
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
2024-09-11 17:43:16 +00:00
Mark Mentovai
35e06fe736 Add Revision to xnu’s README.crashpad
Bug: 349528232
Change-Id: If5550f95a27655e1ad94830c6cd8b33dd2a068c4
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/5845908
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2024-09-09 15:45:19 +00:00
Peter Wen
915913bd5a Fix crashpad for PGO generation
This GN arg config repros the failure in the bug:
```
chrome_pgo_phase = 1
is_official_build = true
target_cpu = "arm64"
target_os = "android"
use_remoteexec = true
```

Commenting out either is_official_build or chrome_pgo_phase removes the
compile error, but since many bots build with is_official_build, the
culprit must be chrome_pgo_phase.

Bug: chromium:362787700
Change-Id: I536a098693b85ed93c22e38e639b393fcb480e79
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/5826154
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2024-09-03 17:27:07 +00:00
Peter Kasting
f9fa2d112b [reland] Don't redefine macros from base/compiler_specific.h.
`DISABLE_CFI_ICALL` is already defined in that header; use it.

This is both simpler and less likely to trigger macro redefinition
errors.

This was previously landed in crrev.com/c/5805458, but reverted due to
crbug.com/362787700.

Bug: chromium:362787700
Change-Id: I1fc8d9dc0b099c67ea7d774034b7691691ff2a50
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/5825328
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2024-08-28 22:57:49 +00:00
Mark Mentovai
50faaf111e Revert "Don't redefine macros from base/compiler_specific.h."
This reverts commit 458bdec9852280f091a72f9d90eb75f04d0af05f.

Reason for revert: Crashpad roll into Chrommium failed.

https://chromium-review.googlesource.com/c/5805903
https://ci.chromium.org/ui/p/chromium/builders/try/android-x64-rel/171929/
https://logs.chromium.org/logs/chromium/buildbucket/cr-buildbucket/8738938901079891665/+/u/compile__with_patch_/stdout

While linking libcrashpad_handler_trampoline.so:

```
ld.lld: error: undefined symbol: std::__Cr::__libcpp_verbose_abort(char const*, ...)
>>> referenced by ascii.cc
>>>               obj/third_party/abseil-cpp/absl/strings/strings/ascii.o:(std::__Cr::__throw_out_of_range(char const*))
>>> referenced by lightweight_quarantine.cc
>>>               allocator_core/lightweight_quarantine.o:(partition_alloc::internal::LightweightQuarantineBranch::~LightweightQuarantineBranch()) in archive obj/base/allocator/partition_allocator/src/partition_alloc/liballocator_core.a
>>> referenced by lightweight_quarantine.cc
>>>               allocator_core/lightweight_quarantine.o:(partition_alloc::internal::LightweightQuarantineBranch::Purge()) in archive obj/base/allocator/partition_allocator/src/partition_alloc/liballocator_core.a
>>> referenced 1 more times
[…]
ld.lld: error: undefined symbol: std::get_new_handler()
[…]
ld.lld: error: undefined symbol: _Unwind_Backtrace
[…]
ld.lld: error: undefined symbol: _Unwind_GetIP
[…]
ld.lld: error: undefined symbol: __cxa_guard_acquire
[…]
ld.lld: error: undefined symbol: __cxa_guard_release
[…]
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
```

Original change's description:
> Don't redefine macros from base/compiler_specific.h.
>
> `DISABLE_CFI_ICALL` is already defined in that header; use it.
>
> This is both simpler and less likely to trigger macro redefinition
> errors.
>
> Bug: none
> Change-Id: I3ecfe9b6dc4ac42c6a69b3fd9c6d2c68fe8e62a2
> Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/5805458
> Reviewed-by: Mark Mentovai <mark@chromium.org>

Bug: none
Change-Id: Ie225e03e07ab3d0a00933217b377cee14fcdb8b7
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/5806223
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Joshua Peraza <jperaza@chromium.org>
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2024-08-22 16:33:50 +00:00
Peter Kasting
756637881a Roll crashpad/third_party/mini_chromium/mini_chromium/ 7eca85315..e04c707cb (3 commits)
7eca853158..e04c707cb3

$ git log 7eca85315..e04c707cb --date=short --no-merges --format='%ad %ae %s'
2024-08-21 pkasting Remove `WPRINTF_FORMAT`.
2024-08-21 pkasting Move/remove macros in compiler_specific.h to match Chromium.
2024-08-13 pbos Remove NOTREACHED_IN_MIGRATION()

Created with:
  roll-dep crashpad/third_party/mini_chromium/mini_chromium

Bug: none
Change-Id: Ief091ad8f6f9a775ccf8b53fb5f884be6834b0f3
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/5805983
Reviewed-by: Mark Mentovai <mark@chromium.org>
2024-08-22 02:48:21 +00:00
Peter Kasting
458bdec985 Don't redefine macros from base/compiler_specific.h.
`DISABLE_CFI_ICALL` is already defined in that header; use it.

This is both simpler and less likely to trigger macro redefinition
errors.

Bug: none
Change-Id: I3ecfe9b6dc4ac42c6a69b3fd9c6d2c68fe8e62a2
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/5805458
Reviewed-by: Mark Mentovai <mark@chromium.org>
2024-08-22 02:47:50 +00:00
Peter Kasting
adb22c8169 Switch from ALIGNAS() to alignas().
There is no longer a need to use this macro; compilers have no problem
with `alignas()` nowadays.

Subsequent CLs will remove the macro entirely once it's unused in both
Crashpad and Chromium.

Bug: none
Change-Id: I94675f3f674f9bc32a213e972a017980dcd1c014
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/5805982
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
2024-08-22 00:55:59 +00:00
Peter Boström
6265674c98 Migrate to NOTREACHED()
This was tested locally by adding "-Wunreachable-code-aggressive" after
making NOTREACHED() [[noreturn]] in mini_chromium and then getting that
to compile.

Bug: chromium:40580068
Change-Id: I7ec1c72be1d73436d128660a621e9060eaebaee8
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/5780891
Reviewed-by: Mark Mentovai <mark@chromium.org>
2024-08-14 03:11:45 +00:00
Peter Boström
cc54fcc7f5 Fix trailing NOTREACHED_NORETURN()
This alias is not present in mini_chromium and disappearing from
chromium.

Bug: chromium:40580068
Change-Id: Ib6218d96df3bb8b2fe46af08ac51d6362c7db64e
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/5783604
Reviewed-by: Mark Mentovai <mark@chromium.org>
2024-08-14 01:57:47 +00:00
Peter Boström
ee8369ffb2 Roll crashpad/third_party/mini_chromium/mini_chromium/ bd56f6933..7eca85315 (1 commit)
bd56f6933f..7eca853158

$ git log bd56f6933..7eca85315 --date=short --no-merges --format='%ad %ae %s'
2024-08-13 pbos Use abort() for NOTREACHED()

Created with:
  roll-dep crashpad/third_party/mini_chromium/mini_chromium

Bug: chromium:40580068
Change-Id: Ia731e0fb3e5e4a50f61abf14d646089582cd1a50
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/5784235
Reviewed-by: Mark Mentovai <mark@chromium.org>
2024-08-13 01:19:28 +00:00
Mark Mentovai
6159a43ff1 Update cpp-httplib to c5c54b31e2bf (0.16.2)
This includes an upstreamed version of the Crashpad-local 1a62a0182557
(https://chromium-review.googlesource.com/c/5769752) for BoringSSL
compatibility.

50fce538c685 threadsafe CLOEXEC on platforms that support it
fb739dbaecf3 threadsafe accept on windows, linux
ed0719f2bcb5 Code format
521529d24d38 Fix #1481 (with content provider) (#1527)
e00fd06355e8 Release v0.16.1
ff038f98b701 Merge branch 'thread-safe-cloexec' of
             github.com:kdombroski/cpp-httplib into kdombroski-thread-
             safe-cloexec
ae63b89cbf70 Use SOCK_CLOEXEC instead of __linux__
69c84c9597c3 BoringSSL compatibility fixes (#1892)
c5c54b31e2bf Release v0.16.2

Change-Id: I01485010de53ae599e22c8ce3c9d6af046d47c24
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/5769660
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2024-08-08 16:22:48 +00:00
Mark Mentovai
1a62a01825 BoringSSL compatibility fixes for cpp-httplib
This fixes errors observed while building
util/http_transport_test_server/http_transport_test_server.cc, shown
below.

The fixes include:
 - Library version check: tolerate BoringSSL as an alternative to
   OpenSSL 3.
 - Don’t call `OPENSSL_thread_stop`, which is not in BoringSSL.
 - Use `SSL_get_peer_certificate` (deprecated in OpenSSL 3), the old
   name for `SSL_get1_peer_certificate`, because the new name is not in
   BoringSSL.
 - Call `SSL_set_tlsext_host_name` directly instead of making a quirky
   `SSL_ctrl` call that BoringSSL does not support. The feared
   -Wold-style-cast warning that occurs when buidling with OpenSSL is
   not triggered in BoringSSL.

Compilation errors from
https://chromium-review.googlesource.com/c/5766975?checksPatchset=1&tab=checkshttps://ci.chromium.org/ui/p/chromium/builders/try/linux-rel/1909715/
→ “10. compilator steps (with patch)” → “31. compile (with patch)” →
stdout
(https://logs.chromium.org/logs/chromium/buildbucket/cr-buildbucket/8740323272553670737/+/u/compile__with_patch_/stdout):

```
In file included from util/net/http_transport_test_server.cc:42:
third_party/cpp-httplib/cpp-httplib/httplib.h:275:2: error: Sorry, OpenSSL versions prior to 3.0.0 are not supported
  275 | #error Sorry, OpenSSL versions prior to 3.0.0 are not supported
      |  ^
In file included from util/net/http_transport_test_server.cc:42:
third_party/cpp-httplib/cpp-httplib/httplib.h:733:7: error: use of undeclared identifier 'OPENSSL_thread_stop'
  733 |       OPENSSL_thread_stop ();
      |       ^
third_party/cpp-httplib/cpp-httplib/httplib.h:9062:30: error: use of undeclared identifier 'SSL_get1_peer_certificate'; did you mean 'SSL_get_peer_certificate'?
 9062 |           auto server_cert = SSL_get1_peer_certificate(ssl2);
      |                              ^~~~~~~~~~~~~~~~~~~~~~~~~
      |                              SSL_get_peer_certificate
…/boringssl/src/include/openssl/ssl.h:1784:22: note: 'SSL_get_peer_certificate' declared here
 1784 | OPENSSL_EXPORT X509 *SSL_get_peer_certificate(const SSL *ssl);
      |                      ^
In file included from util/net/http_transport_test_server.cc:42:
third_party/cpp-httplib/cpp-httplib/httplib.h:9083:24: error: use of undeclared identifier 'doesnt_exist'
 9083 |         SSL_ctrl(ssl2, SSL_CTRL_SET_TLSEXT_HOSTNAME, TLSEXT_NAMETYPE_host_name,
      |                        ^
…/boringssl/src/include/openssl/ssl.h:5699:38: note: expanded from macro 'SSL_CTRL_SET_TLSEXT_HOSTNAME'
 5699 | #define SSL_CTRL_SET_TLSEXT_HOSTNAME doesnt_exist
      |                                      ^
4 errors generated.
```

Change-Id: I5798f17323672d70f75335cea61094457b54466e
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/5769752
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2024-08-07 17:57:22 +00:00
Mark Mentovai
b8658f3806 Use Python shlex instead of the deprecated pipes
pipes is deprecated since Python 3.11 and is scheduled for removal in
Python 3.13 (https://peps.python.org/pep-0594/#deprecated-modules), with
shlex.quote being available since Python 3.3.

This was already implemented downstream in Chromium at
https://chromium.googlesource.com/chromium/src/+/8dc44aaeff04 without
following the instructions in third_party/crashpad/README.chromium, and
collided during the update at
https://chromium-review.googlesource.com/c/5766975.

Bug: 1453653
Change-Id: If54bd260e6f571c58f44568e79adafade5b1987e
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/5767512
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2024-08-06 20:30:30 +00:00
Justin Cohen
9b3ff691e9 Upgrade simulator tests to iPhone 15 running iOS 17.4
Bug: 356640476
Change-Id: Ic715b20d7e8263854b1301d1bc74152a3becb206
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/5758238
Commit-Queue: Justin Cohen <justincohen@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
2024-08-01 21:27:47 +00:00
Mark Mentovai
d380daf704 Update cpp-httplib to 6a848b1a1643
Most significantly, this includes:

6a848b1a1643 Require a minimum of TLS 1.2 (#1889)

Although Crashpad only uses cpp-httplib in tests, there’s no reason to
taunt fate with this tempting juicy morsel. TLS 1.1 is deprecated
(https://datatracker.ietf.org/doc/html/rfc8996, 2021-03).

This includes a change to util/net/http_transport_test_server.cc to
ensure that the test server, which runs in a child process, continues to
return the full multipart request body as it had in the past. Since
cpp-httplib 7e420aeed361 introduced multipart handling, the raw
multipart wrapper no longer appears in Request::body, but is instead
made available at Request::files. With this change, the test server will
reconstitute the original request body to match the test’s expectations.
Note that this isn’t the only way to serialize the request to be
conveyed back to the test, but it’s the most expedient because it’s what
the test already expects, and because the existing framing already takes
the form of the raw HTTP request.

Change-Id: Ia4adaedff0873976f7cc5be138d78f931165fe4e
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/5753782
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
2024-07-31 17:46:48 +00:00
Daniel Cheng
aef7de4e93 [MSan] "Fix" use-after-dtor in InitializationState.InitializationState
Since the test is specifically trying to exercise UB by testing the
state of an object it is already destroyed, unpoison the memory to
suppress MSan errors.

Bug: 40222690
Change-Id: I840e944f5e8b39668ac05d8d641fdd5f2e3db5ac
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/5716150
Reviewed-by: Mark Mentovai <mark@chromium.org>
2024-07-17 17:08:24 +00:00
Takuto Ikuta
a1fc5d728b Revert "DEPS: fix version of fuchsia/sdk/core to avoid build error"
This reverts commit a63adda6278e9caa75361051cb23fd914e533151.

Reason for revert:
This is not necessary after https://crrev.com/c/5585353.

Original change's description:
> DEPS: fix version of fuchsia/sdk/core to avoid build error
>
> This is a temporary workaround to avoid error like
> https://ci.chromium.org/ui/p/crashpad/builders/try/crashpad_fuchsia_arm64_dbg/1299/overview
>
> Bug:  41489832
> Change-Id: Ia5404b5d7a2f01f53211fba7b8d602b9236ccbd3
> Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/5599904
> Commit-Queue: Takuto Ikuta <tikuta@chromium.org>
> Reviewed-by: Mark Mentovai <mark@chromium.org>

Bug: 41489832
Change-Id: I2c6d3c3008047a6f79fb3bfddd8240a758ee645a
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/5599914
Reviewed-by: Mark Mentovai <mark@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Takuto Ikuta <tikuta@chromium.org>
2024-06-06 03:01:20 +00:00
Takuto Ikuta
c09de98737 remove references to goma
goma is not maintained anymore.

Bug: 41489832
Change-Id: Ic82524205c7593ddba041c253e7d6283f9c89f33
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/5599864
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Takuto Ikuta <tikuta@chromium.org>
2024-06-06 01:46:46 +00:00