2231 Commits

Author SHA1 Message Date
Justin Cohen
20d6dee037 Roll crashpad/third_party/googletest/googletest/ 5bcd8e3bb..af29db7ec (148 commits)
5bcd8e3bb9..af29db7ec2

$ git log 5bcd8e3bb..af29db7ec --date=short --no-merges --format='%ad %ae %s'
2022-03-23 absl-team Address deprecation warning surfaced by Github presubmit tests
2022-03-23 mattias.ellert Split gmock-matchers_test into 4 smaller test #3653
2022-03-22 absl-team Only print disabled test banner if the test matches gtest_filter
2022-03-21 absl-team Clarify public access on gmock examples.
2022-03-18 bmesser Remove sanity as it is offensive to neurodiverse individuals.
2022-03-15 absl-team Running clang-format over all of GoogleTest
2022-03-14 dinor Remove references to deleted script gen_gtest_pred_impl.py
2022-03-08 absl-team Mark ACTION_Pn()-generated functions as must-use-result, adding non-compilation tests.
2022-03-08 sobik.szymon Add myself to contributors
2022-03-08 sobik.szymon Adjust documentation regarding xml and json source file location otput.
2022-03-08 sobik.szymon Adjust xml and json unit tests to test for source file and line location.
2022-03-08 sobik.szymon Add support for testing of xml and json output of source file and line location
2022-03-08 sobik.szymon Output source file path and line number in xml and json files.
2022-02-17 dmauro Update GCC/Clang Linux tests to use Bazel 5.0.0
2022-02-14 absl-team Address conversion warning by explicitly casting to size_t
2022-02-09 absl-team Add a 3-arg overload for ResultOf() matcher that takes a description string for better error messages.
2022-02-05 hgsilverman Apply requested changes by using std::inserter with move.
2022-02-05 noiseless-ak Fix gtest-help-test failure on OpenBSD
2022-02-01 absl-team GetCurrentOsStackTraceExceptTop (both the method of UnitTestImpl and the wrapper function in gtest.cc) rely on the fact that the inner call is not getting optimized. This CL annotates them with the appropriate attributes.
2022-01-29 hgsilverman Do constant time matching for exact match filters.
2022-01-28 dmauro Finish some missed pieces of the TestCase to TestSuite Migration
2022-01-26 dinor Change `ReturnArg` to use perfect forwarding of arguments (#3733)
2022-01-25 melroy Let me give a change to try it again - updating to latest version
2022-01-24 absl-team Make recreate_environments_when_repeating=false the default.
2022-01-19 absl-team Factor out AssertionResult into dedicated gtest-assertion-result header + implementation files to prevent cyclic includes between gtest.h and gtest_pred_impl.h
2022-01-18 absl-team Consistently apply IWYU pragmas across googletest and googlemock headers
2022-01-14 dinor Fix reference to source file in gmock FAQ
2022-01-14 dmauro Update test Docker image to GCC 11.2, Clang 14 (prerelease), CMake 3.22.1, and Bazel 4.2.2
2022-01-13 ayush854032 FIX #2174 -- remove `DEBUG_POSTFIX`
2022-01-12 absl-team Fix run-on sentence
2022-01-06 hgsilverman Fix a typo in comments.
2021-12-22 hgsilverman Use normal for loop instead of accumulate.
2021-12-17 hgsilverman Improve code readablity.
2021-12-17 hgsilverman Apply requested changes to preserve old behavior.
2021-12-03 hgsilverman Reimplement MatchesFilter with new interfaces.
2021-11-23 hgsilverman Apply requested changes.
2021-10-17 hgsilverman Get rid of redundant filter matching code
2021-10-17 hgsilverman Add comments describing the behavior of filters
2021-10-17 hgsilverman Process filter string once instead of per test
2022-01-05 bsilver16384 Remove another GTEST_DISALLOW_ASSIGN_ that crept in
2022-01-05 73706994+jjfvanderpol Set CMake Policy CMP0077 to NEW
2022-01-04 4789010+ramkumar-kr Update example to reflect the tests below
2022-01-01 ayush854032 FIX #3719 -- Fix `clang` conversion warnings
2021-12-27 absl-team Include the param names in the generated description of the MATCHER_P matchers.
2021-12-22 absl-team Clarify "package" means "Bazel package", and promote `testonly=True` rather than `testing` sub-directory.
2021-12-22 dmauro Makes the Python imports consistently use full paths from the repository root, unifying the behavior between Bazel and CMake
2021-12-21 dmauro Makes TestForDeathTest.CRTDebugDeath only run when _DEBUG is defined
2021-12-21 philip.j.m link to regex on qnx in cmake
2021-12-15 dinor Release tests for UnitTestOptions::MatchesFilter
2021-12-07 absl-team Add NOLINT to address modernize-use-trailing-return-type in TEST_F uses
(...)
2021-09-14 absl-team Googletest export
2021-09-15 761129+derekmauro Revert grammatically incorrect change
2021-09-10 absl-team Googletest export
2021-08-20 absl-team Googletest export
2021-08-20 absl-team Googletest export
2021-08-19 invalid_ms_user Simplify example code with c++11
2021-08-12 absl-team Googletest export
2021-08-10 dmauro Googletest export
2021-08-09 dmauro Googletest export
2021-08-10 akashkumarsingh11032001 add a missing 'a'
2021-08-10 akashkumarsingh11032001 Create CONTRIBUTING.md
2021-08-06 absl-team Internal change
2021-08-06 victordk13 Format test properties in xml printer
2021-08-05 iamberkeyavas typo fix gmock_cook_book
2021-08-03 absl-team Googletest export
2021-08-03 absl-team Googletest export
2021-08-02 absl-team Googletest export
2021-07-29 absl-team Googletest export
2021-07-29 otnaiud Typo, double "the"
2021-07-28 absl-team Internal change
2021-07-24 slowy.arfy fix: typo codespelling comment
2021-07-22 absl-team Googletest export
2021-07-21 absl-team Googletest export
2021-07-19 dmauro Googletest export
2021-07-14 761129+derekmauro Fix location of GOOGLETEST_CM0011 marker
2021-07-08 absl-team Googletest export
2021-07-08 absl-team Googletest export
2021-07-07 absl-team Googletest export
2021-07-02 absl-team Googletest export
2021-07-02 absl-team Googletest export
2021-07-07 manuel Link -lregex on QNX
2021-07-01 jeremy.nimmer Use GTEST_DONT_DEFINE_TEST_F to guard TEST_F
2021-06-29 absl-team Googletest export
2021-06-28 absl-team Googletest export
2021-06-28 absl-team Googletest export
2021-06-25 manuel Don't link pthread on QNX
2021-06-23 alex Fix EXPECT_DEATH() and ASSERT_DEATH() triggering -Wcovered-switch-default
2021-06-18 dmauro Googletest export
2021-06-03 pochkaenkov feat: make a matcher ElementsAreArray applicable for std ranges
2021-06-13 hyuk.myeong fix typos
2021-06-11 absl-team Googletest export
2021-06-10 absl-team Googletest export
2021-06-09 absl-team Googletest export
2021-06-09 dmauro Googletest export
2021-06-09 absl-team Googletest export
2021-06-09 absl-team Googletest export
2021-06-08 absl-team Googletest export
2020-12-30 mattias.ellert Port to GNU/Hurd
2020-12-29 julien.jemine Using auto instead of container::const_iterator
2020-12-24 georgthegreat Use proper feature test macro to test if library supports char8_t

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

Change-Id: I34a2d997498b73a17ee9ee71db45081f2ebab9a4
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3553800
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Justin Cohen <justincohen@chromium.org>
2022-03-26 02:42:15 +00:00
Justin Cohen
facfdb9e53 Roll crashpad/third_party/edo/edo/ 6ffbf8331..727e55670 (28 commits)
6ffbf83317..727e556705

$ git log 6ffbf8331..727e55670 --date=short --no-merges --format='%ad %ae %s'
2022-03-24 strangewiz Fix up EDO with -Wunused-but-set-variable warning turned on. (#244)
2022-03-14 ynzhang Internal test update only.
2022-03-14 ynzhang Test update only.
2022-02-03 albertbow eDO won't block the object encoding if the object is passed by value.
2021-11-12 albertbow Change EDOHostService.keepDeviceConnection to readwrite and atomic.
2021-11-10 albertbow Change internal-only property from "readwrite/atomic" to "readonly/nonatomic".
2021-11-09 no-reply Add appropriate nonatomics to properties so we can enable `-Wimplicit-atomic-properties`
2021-11-07 no-reply Fix up EDO with `-Wbad-function-cast` warning turned on.
2021-11-07 no-reply Fix up EDO with `-Warc-repeated-use-of-weak`
2021-10-27 ynzhang Invalidate the host service before resetting the service map.
2021-10-25 albertbow Add reconnection logic if eDO host is constructed via device connection.
2021-10-18 ynzhang Fix an issue of encoding for some targets.
2021-08-06 haowoo Update to Xcode 12.5 and clean up Travis.
2021-07-09 mobile-devx-github-bot Don't prevent passing NULL to non-Objective-C pointer parameters.
2021-05-25 albertbow Correct return value of eDO class request to be nullable.
2021-04-29 albertbow Upgrade eDO deployment os target to 11.0.
2021-04-29 albertbow Create helper class to pass Codable pure Swift types through a remote call.
2021-04-28 albertbow Bump Travis xcode version to 12.0.
2021-03-12 albertbow Avoid always creating listening port on the temporary service.
2021-03-11 albertbow Clean up IWYU warnings for eDO code base.
2021-03-05 albertbow Adds one more test case for deadlock fix.
2021-03-04 albertbow Fix the deadlock caused by recursive eDO call from temporary host service.
2021-02-10 mobile-devx-github-bot Internal Change.
2021-01-14 tirodkar Update eDO comments.
2020-12-17 albertbow Fix remote invocation failure on EDOObject wrapped EDOWeakObject.
2020-12-09 albertbow Upgrade CHANGELOG and podspec for eDO 1.0.2 release.
2020-11-23 haowoo Retrieve block signatures directly from block headers.
2020-11-21 mobile-devx-github-bot Add signature to blocks in EDO

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

Change-Id: I1fbb78652893e6f334e22902b3bafe4df9d3f173
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3550546
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Justin Cohen <justincohen@chromium.org>
2022-03-25 22:38:13 +00:00
Justin Cohen
4ead15ad86 ios: Fix googletest compile with latest Xcode.
Ignore gmock-matchers_test.cc deprecated std::iterator.

Change-Id: I008d7fc8bde34653d6bde8046875edfc5660f606
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3550545
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Justin Cohen <justincohen@chromium.org>
2022-03-25 22:37:17 +00:00
Justin Cohen
8c7caef421 ios: Don't report preprocessed NSExceptions until the uncaught handler.
Change the ObjExceptionProcessor to write intermediate dumps to a
temporary location until they are confirmed by the
UncaughtExceptionHandler. Because the exception preprocessor uses
heuristics to detect iOS sinkholes, it's possible for an exception to
be identified as fatal, but not actual trigger the uncaught exception
handler. If the processor detects more than one fatal exception, it will
unregister itself and indicate this in the second dump with the key
'MultipleHandledUncaughtNSException'.

This changes also consolidates and simplifies some methods in the
InProcessHandler.

Change-Id: Ifc457e974d25f533b77cfd18b702129fdfb10a75
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3529968
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Commit-Queue: Justin Cohen <justincohen@chromium.org>
2022-03-25 22:35:58 +00:00
Justin Cohen
dedbc0f61b Update Crashpad bot scripts to python3.
Change-Id: Ie3848c2f2bbbe34ca3a5e7da5e7d05e3cfba5b72
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3549021
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Justin Cohen <justincohen@chromium.org>
2022-03-25 22:34:48 +00:00
Justin Cohen
f88a116c0e Update Crashpad scripts to python3
Also update mini_chromium to f87a38442a9e for python3 changes.

Change-Id: I4ca7aa4cc9dcc97698fc0bc13cfb339421668074
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3542572
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Justin Cohen <justincohen@chromium.org>
2022-03-24 02:50:56 +00:00
Justin Cohen
25e67e285c ios: Track last NSException in ObjcException preprocessor.
Some sinkholes use objc_exception_throw instead of rethrow, which gives
the preprocessor a second, incorrect, attempt to process the
NSException. This also means if the processor misses the first sinkhole,
on the second attempt the original throwing stack will be missing.

Instead, track the original NSException and ignore any followup calls
to the ObjcExceptionPreprocessor with the same NSException.

Also creates a ExceptionPreprocessorState class to manage the complex
types. This will be used in a followup CL to finalize caught
NSExceptions using the uncaught handler.

Bug: 1300171
Change-Id: I1f9f2c7ee79c7a16585103f04831217979e9332b
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3530246
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Commit-Queue: Justin Cohen <justincohen@chromium.org>
2022-03-23 21:54:56 +00:00
Justin Cohen
243dffb045 ios: Stop prune and upload thread when app is inactive and may suspend.
Stop the prune thread and the upload thread when moving to the
inactive/background state. This will reduce the number of 0xdead10cc
system kills from having a file lock during iOS suspend.

Wait to start the prune thread when the application is active.
Otherwise, for iOS prewarmed applications, the prune thread will
regularly start when the application is foregrounded for the first
time when the user intentionally runs the app.

It's still possible for either the prune thread or the upload thread to
have a file lock during iOS suspend, such as when a task started in the
foreground and does not complete in time for suspension. Future work
should include considering BackgroundTasks and/or NSURLSessions, which
can more safely run in the background.

Bug: crashpad: 400
Change-Id: Ic7d4687eb795fe585327f128aa84a5928141f4a9
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3517967
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Commit-Queue: Justin Cohen <justincohen@chromium.org>
2022-03-23 02:53:15 +00:00
Justin Cohen
460dbdceae ios: Unblock all signals corresponding to Mach exceptions on crash.
https://crrev.com/c/3401563 introduced logic to guard the cached
intermediate dump writer from concurrent exceptions with a first
exception wins approach. To prevent the losing exception from returning
immediately and terminating the app before the dump is written, the
losing thread sleeps indefinitely. In the case where the losing
exception is from a call to abort() and the winning exception is a Mach
exception, the process will never terminate because abort() will first
block all signals on all other threads with a sigprocmask. This prevents
the kernel from delivering the signal converted from the Mach exception
and will never terminate. This effectively deadlocks the app.

Instead, unblock all signals corresponding to all Mach exceptions
Crashpad registers for before returning KERN_FAILURE.

Bug: crashpad:391
Change-Id: I96c357e98f09e65e70c67125a45b9b04075c2c06
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3518186
Reviewed-by: Mark Mentovai <mark@chromium.org>
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
Commit-Queue: Justin Cohen <justincohen@chromium.org>
2022-03-22 19:22:14 +00:00
Justin Cohen
4c85c466b0 ios: Fix test failure on M1 ARM64 machines.
in_process_intermediate_dump_handler_test was mixing CPU
architecture (x86_64 vs arm64) and iOS device type (iphoneos vs
iphonesimulator).

Bug: 1306589
Change-Id: Ie43a7f1916d69888e992320d999010071b2575b3
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3527034
Reviewed-by: Rohit Rao <rohitrao@chromium.org>
Commit-Queue: Justin Cohen <justincohen@chromium.org>
2022-03-16 01:30:50 +00:00
Justin Cohen
cd13ea34eb ios: Add ScopedBackgroundTask to UploadThread and PruneThread.
iOS applications may be terminated with the exception code 0xdead10cc
when holding on to file locks in the shared container during suspension.
One approach to minimize this is to request additional background
execution time to complete the locking operation (in this case the
CrashReportUpload thread and the PruneIntermediateDumpsAndCrashReports
thread).

Bug: crashpad:400
Change-Id: I4192ae1a92646ea337a09ac071e49761ab2d3860
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3517966
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Commit-Queue: Justin Cohen <justincohen@chromium.org>
2022-03-15 17:23:20 +00:00
Justin Cohen
9c1719802f ios: Replace RawLog FileHandler instead of using freopen for tests.
Previous commits[1][2] modified tests to require looking at RawLog
output to validate the success or failure of the iOS InHandlerProcess.
Previously this would use freopen to direct the RawLog to a file.
However, freopen introduces a race where the log file may not be
associated with stderr, and instead may interfere with the
InProcessHandler's cached writer fd. This caused flake with the
intermediate dumps sometimes including stderr logging.

Since the test fixtures only needs to know about the output of RawLog,
instead add a crashpad::internal::SetFileHandleForTesting method to
that swaps out STDERR_FILENO with the test fixture's fd.

[1] https://crrev.com/c/3488826
[2] https://crrev.com/c/3401563

Change-Id: I87b1020db6b896a47bec5a7c916a572c192b884f
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3517773
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
Commit-Queue: Justin Cohen <justincohen@chromium.org>
2022-03-15 17:10:30 +00:00
Ben Hamilton
9476a76dc0 win: Use RegOpenKeyExW() instead of RegOpenKeyEx()
Similar to crrev.com/c/3516536, this CL fixes the Windows build
when the UNICODE preprocessor macro is not defined where
code passes Unicode string literals with L"..." to non-Unicode
APIs like RegOpenKeyEx().

This fixes the build by explicitly using RegOpenKeyExW() instead.

Change-Id: I14a827357b9cbd42452e0e5eb13a3430569559a5
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3516538
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
2022-03-10 23:10:26 +00:00
Ben Hamilton
ab43d794a6 win: Use RegQueryValueExW() instead of RegQueryValueEx()
crrev.com/c/3434090 introduced a change that breaks the Windows build
when the `UNICODE` preprocessor macro is not defined, as it passed
a `wchar_t*` to `RegQueryValueEx()`.

This fixes the build by explicitly using `RegQueryValueExW()` instead.

Change-Id: Ic438bd982fdeffba05b4224051242b45e797ebd8
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3516536
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
2022-03-10 21:04:06 +00:00
Justin Cohen
785cb10e80 ios: Move IOSSystemDataCollector to InProcessHandler.
The IOSSystemDataCollector was previously owned by the iOS CrashHandler
and passed in to the iOS InProcessHandler in each method. Move
ownership to iOS InProcessHandler to simplify.

Change-Id: Ifa41304cb1e3e3825a211e6cce5aa730d0edcc95
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3517965
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
Commit-Queue: Justin Cohen <justincohen@chromium.org>
2022-03-10 20:57:46 +00:00
Justin Cohen
12b35ebde8 ios: Add forbidden allocator to integration tests.
Override malloc_default_zone and malloc_default_purgeable_zone
with allocators that exit when called from the signal or Mach exception
threads in XCUITests, to verify the allocator is not used by the
InProcessHandler. Check stderr for error messages to confirm failures.

Change-Id: I1bb92e57504d71bbf6c6eaad3571c814e8a6934c
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3488826
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
Commit-Queue: Justin Cohen <justincohen@chromium.org>
2022-03-10 18:08:46 +00:00
Justin Cohen
3c4e37178d ios: Fix up concurrency in DumpWithoutCrashing and exception handling.
Change signal, uncaught NSExceptions and Mach exception handlers to
prevent re-entrancy with a first-exception-wins approach to prevent
concurrent exceptions from trying to use the same cached intermediate
dump writer.  Uses compare-and-swap to either return early for reentrant
signals or to wait indefinitely for anything after the first fatal
exception.

Change the NSException handler generated from the Objective-C exception
preprocessor to not used the cached intermediate dump writer and
not use the same first-exception-wins logic. This is useful because the
Objective-C exception preprocessor is imperfect and may generate
intermediate dumps that are not followed by process termination.

Simplify DumpWithoutCrashing's ownership of its intermediate dump writer
to be thread safe.

Set a handler for SIGPIPE for applications that haven't already
ignored or set a handler for SIGPIPE.

Bug: crashpad:391
Change-Id: Ia8ae61d50be81910fa0af40325300441d9dc01b6
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3401563
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
Commit-Queue: Justin Cohen <justincohen@chromium.org>
2022-03-10 18:05:16 +00:00
Joshua Peraza
13202c2ffe linux: set ptracer in signal handlers
Bug: b/215231949
Change-Id: I7e81308ed755d5f9340950fcf6a1bb70fcf66cd6
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3472607
Reviewed-by: Justin Cohen <justincohen@chromium.org>
Commit-Queue: Joshua Peraza <jperaza@chromium.org>
2022-03-09 20:00:05 +00:00
Daniel Cheng
0affe61689 Migrate base::{size,empty,data} to STL equivalents in crashpad.
Bug: chromium:1299695
Change-Id: I95187a425b08c96430c659f843c379d506972f0f
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3496462
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
2022-03-01 12:06:49 +00:00
Justin Cohen
2bb6f068a8 Fix off-by-one error in ModuleSnapshotMinidump DebugFileName.
Strings in minidumps are typically NUL-terminated
(https://docs.microsoft.com/en-us/windows/win32/api/minidumpapiset/ns-minidumpapiset-minidump_string).
But the CodeViewRecord types do not use MINDIUMP_STRINGs, and do not
have a separate length field for the pdb_name. Instead, the strings are
always NUL-terminated, with the length derived from the
MINIDUMP_LOCATION_DESCRIPTOR::DataSize field. The writer is correctly
NUL-terminating the debug filename, but ModuleSnapshotMinidump is
off-by-one and including the NUL-terminator.

Change-Id: I8d813b5ef9e9e167dca73a6a938fbbf8dd1580c2
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3482876
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Justin Cohen <justincohen@chromium.org>
2022-02-24 21:55:20 +00:00
Ben Hamilton
e9937cb36c [Cleanup] Fix circular dependency on Windows.
Crashpad currently has a circular dependency: client->snapshot->client.

The dependency from snapshot -> client only exists to pull in a single
constant for Windows (CrashpadClient::kTriggeredExceptionCode), so this
change breaks the dependency by splitting the constant out into a new
file util/win/exception_codes.h.

Change-Id: I6b74b367df716e097758e63a44c53cb92ea5e04d
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3450763
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Justin Cohen <justincohen@chromium.org>
2022-02-17 19:33:24 +00:00
Bruce Dawson
4112c11b77 ios: Use PlatformTest instead of testing::Test
When trying to update Chromium's copy of crashpad I got this error
message:

Banned functions were used.
    third_party\crashpad\crashpad\client\crashpad_client_ios_test.mm:33:
      testing::Test should not be used in Objective-C++ code as it does
      not drain the autorelease pool at the end of the test. Use
      PlatformTest instead.

So, I'm fixing the code as requested.

The change was introduced in crrev.com/c/3418581

Change-Id: I4888febbd41b6365d9bde5ad062565770496243f
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3459403
Reviewed-by: Justin Cohen <justincohen@chromium.org>
Commit-Queue: Bruce Dawson <brucedawson@chromium.org>
2022-02-13 04:30:30 +00:00
Bruce Dawson
0830895880 ios: Remove unused vector include
When updating Chromium's copy of crashpad I received this very
reasonable warning:

    client\ios_handler\exception_processor.h: Includes STL header(s) but does not reference std::

So, this change removes the #include of vector.

Change-Id: I22f05b542fd4e0b582351072a3e3bb4af402b836
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3459402
Reviewed-by: Mark Mentovai <mark@chromium.org>
Reviewed-by: Justin Cohen <justincohen@chromium.org>
Commit-Queue: Bruce Dawson <brucedawson@chromium.org>
2022-02-13 04:30:21 +00:00
Bruce Dawson
be4fb6a412 win: Get correct version info from registry
kernel32.dll no longer works as a source of truth for Windows versions
because it is not updated with every Windows update. This change grabs
the last two version numbers from the registry, if possible.

This also copies some code cleanup from Chromium (crrev.com/c/3205913).

Bug: chromium:1248324
Change-Id: I9d6745084060f033cd54c56f832aed4ac163e6be
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3434090
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Bruce Dawson <brucedawson@chromium.org>
2022-02-10 18:00:58 +00:00
Vadim Shtayura
d78c03600c Switch to shorter bucket names in luci-scheduler.cfg.
This is an ongoing LUCI config migration.

R=jperaza@chromium.org

Change-Id: If4a85cf8c9156cacee0305566a345ac1de498d93
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3449163
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
Commit-Queue: Joshua Peraza <jperaza@chromium.org>
2022-02-09 20:57:20 +00:00
André Kempe
45cc0da93a arm64: Add Armv8.3-A PAC support to assembly files
This patch adds optional support for Arm Pointer Authentication Codes.

X30/LR is not stored to stack at any place and restored for usage.
Therefore only adding PAC flag to .note.gnu.property section.

Change-Id: I9581059dfa1eed88af5a73df15b6a0d299caea13
Bug: crashpad: 1145581
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3440070
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Adenilson Cavalcanti <cavalcantii@chromium.org>
2022-02-08 08:42:05 +00:00
Joshua Peraza
d464981876 Use atomics in metrics recording terminate handler
Accessing static data which requires dynamic initialization produces
undefined behavior in signal handlers.

Bug: crashpad:384
Change-Id: Ic100c8b34cb61a8ed76bd09e5a1178086d31fd68
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3433270
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Joshua Peraza <jperaza@chromium.org>
2022-02-02 22:26:21 +00:00
Joshua Peraza
f96b86e360 Upgrade builders to Ubuntu-18.04
Change-Id: I5f918b37b8eef1ef23930f0570df5baea7f52fad
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3433272
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Joshua Peraza <jperaza@chromium.org>
2022-02-02 22:08:45 +00:00
Justin Cohen
55eb7a2eaf ios: Add ability to reset Crashpad client for iOS tests.
Change-Id: I83df67d77367ef01731bd9af015605cfa19e972e
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3418581
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Justin Cohen <justincohen@chromium.org>
2022-02-02 17:50:04 +00:00
Justin Cohen
36ad571862 ios: Add MemorySnapshotIOSIntermediateDumpTest.
Change-Id: Ib8b962c631d6ae90fb1805dff5e28ab078940328
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3401570
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Justin Cohen <justincohen@chromium.org>
2022-01-26 21:58:40 +00:00
Justin Cohen
30d302a8ca ios: Speed up XCUITests by swizzling away Xcode crash check.
Change-Id: Iadda950544448d771960d35fd064f5287bce0484
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3410579
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Justin Cohen <justincohen@chromium.org>
2022-01-26 20:12:31 +00:00
Justin Cohen
496d522cc4 ios: Add comment explaining why iOS only installs a SIGABRT handler.
xnu turns hardware faults into Mach exceptions, so the only signal left
to register is SIGABRT, which never starts off as a hardware fault.
Installing a handler for other signals would lead to recording
exceptions twice. As a consequence, Crashpad will not generate
intermediate dumps for anything manually calling raise(SIG*). In
practice, this doesn’t actually happen for crash signals that originate
as hardware faults.

Change-Id: I1be669d10e89b8e8ebcc69cfdf79c1ee20c96f76
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3403042
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Justin Cohen <justincohen@chromium.org>
2022-01-21 04:33:37 +00:00
Justin Cohen
b25b523d30 ios: Simplify testBadAccess by removing optimizations.
The badAccess test may return different mach exception codes depending
on optimization levels. Simplify by this by turning off optimization
for this particular test.

Also removes testSegv, which was duplicative and not really testing
SIGSEGV.

Change-Id: Idb92731da6a86545ed83c2bbdd200a0b792c579f
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3403040
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Justin Cohen <justincohen@chromium.org>
2022-01-21 04:14:57 +00:00
Joshua Peraza
50531fc68f linux: fix missing includes and warnings
Change-Id: If83d74d86f4792ad8f8c4c62116457d1126ae9e9
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3404959
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Joshua Peraza <jperaza@chromium.org>
2022-01-20 19:56:16 +00:00
Ben Hamilton
1cf99ea4d2 [Crashpad/iOS] Harden CrashHandler against crashes during intermediate dump processing
https://crrev.com/c/3399252 fixed a heap overrun in iOS intermediate
dump processing.

This is a follow-up to that change to harden `CrashHandler` against
similar crashes:

1) Ensure the destructor of `ScopedAlternateWriter` is invoked
   to restore `InProcessHandler::writer_` state before processing
   the intermediate dump (otherwise, a signal raised by the intermediate
   dump handler would dereference the empty `std::unique_ptr` in
   `InProcessHandler::writer_`).

2) Harden `InProcessHandler` to check if `writer_` is empty before
   handling signals or exceptions

Change-Id: I1e63a496395b26681632302e8915b4433897037a
Bug: 391
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3401766
Reviewed-by: Justin Cohen <justincohen@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
2022-01-20 19:13:46 +00:00
Joshua Peraza
fd732953ce linux: handle multi-threaded crashes
Handle multiple simultaneous crashes among threads by having
the first crashing thread set an atomic flag and subsequently crashing
threads check the flag before requesting a dump. If a dump has already
been requested, the threads pause on a futex with a timeout in case the
crashing thread crashes again or otherwise fails to WakeThreads().

The thread_local disabled_for_thread_ is removed and combined with this
flag because accessing thread_locals produces undefined behavior in
signal handlers.

Bug:crashpad:384, chromium:861730
Change-Id: I83bce36e1010d0635ba8aeac937e150c43a4166f
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3403017
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Joshua Peraza <jperaza@chromium.org>
2022-01-20 18:38:56 +00:00
Joshua Peraza
667424894f linux: re-order first-chance-handlers, and disabled signal handlers
Both running first chance handlers and checking for disabled signal
handlers should no longer interact with DumpWithoutCrashing().

First-chance-handlers should also run even with disabled crashpad
signal handlers or else those signals would be reported by the next
chained signal handlers as crashes.

Change-Id: I64b3da42c400a1c431c6228d4da181ed56bfda89
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3403413
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Joshua Peraza <jperaza@chromium.org>
2022-01-20 17:23:26 +00:00
Mark Mentovai
1721bb991c Remove unused header <string> from client/settings.h
Change-Id: I04d065f8f77797e6a301dffde30dcfe376e9a48d
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3402639
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
2022-01-19 20:57:45 +00:00
Mark Mentovai
50ed179e9a Use BUILDFLAG for OS checking
Use BUILDFLAG(IS_*) instead of defined(OS_*).

This was generated mostly mechnically by performing the following steps:
 - sed -i '' -E -e 's/defined\(OS_/BUILDFLAG(IS_/g' \
                -e 's%([ !])OS_([A-Z]+)%\1BUILDFLAG(IS_\2)%g' \
       $(git grep -l 'OS_'
         '**/*.c' '**/*.cc' '**/*.h' '**/*.m' '**/*.mm')
 - sed -i '' -e 's/#ifdef BUILDFLAG(/#if BUILDFLAG(/' \
       $(git grep -l '#ifdef BUILDFLAG('
         '**/*.c' '**/*.cc' '**/*.h' '**/*.m' '**/*.mm')
 - gsed -i -z -E -e \
       's%(.*)#include "%\1#include "build/buildflag.h"\n#include "%' \
       $(git grep -l 'BUILDFLAG(IS_'
         '**/*.c' '**/*.cc' '**/*.h' '**/*.m' '**/*.mm')
 - Spot checks to move #include "build/buildflag.h" to the correct parts
   of files.
 - sed -i '' -E -e \
       's%^(#include "build/buildflag.h")$%#include "build/build_config.h"\n\1%' \
       $(grep -L '^#include "build/build_config.h"$'
         $(git grep -l 'BUILDFLAG(IS_'
           '**/*.c' '**/*.cc' '**/*.h' '**/*.m' '**/*.mm'))
 - Add “clang-format off” around tool usage messages.
 - git cl format
 - Update mini_chromium to 85ba51f98278 (intermediate step).
   TESTING ONLY).
 - for f in $(git grep -l '^#include "build/buildflag.h"$'
              '**/*.c' '**/*.cc' '**/*.h' '**/*.m' '**/*.mm'); do \
       grep -v '^#include "build/buildflag.h"$' "${f}" > /tmp/z; \
       cp /tmp/z "${f}"; done
 - git cl format
 - Update mini_chromium to 735143774c5f (intermediate step).
 - Update mini_chromium to f41420eb45fa (as checked in).
 - Update mini_chromium to 6e2f204b4ae1 (as checked in).

For ease of review and inspection, each of these steps is uploaded as a
new patch set in a review series.

This includes an update of mini_chromium to 6e2f204b4ae1:

f41420eb45fa Use BUILDFLAG for OS checking
6e2f204b4ae1 Include what you use: string_util.h uses build_config.h

Bug: chromium:1234043
Change-Id: Ieef86186f094c64e59b853729737e36982f8cf69
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3400258
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
2022-01-19 20:21:19 +00:00
Justin Cohen
b714b223ad ios: Actually merge memory snapshot data.
To avoid unnecessary duplication of potentially large memory regions,
the iOS MemorySnapshot data is owned by the intermediate dump. When
merging two iOS memory snapshots, it's necessary to copy the merged
data into a vector owned by the memory snapshot itself.

Previously the merged snapshot just contained the original data, which
leads to a heap overrun.

Bug: 1288544
Change-Id: I4eb392800141451db188d17c7b9f9ca9bd3bb603
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3399252
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Justin Cohen <justincohen@chromium.org>
2022-01-19 00:00:04 +00:00
Aleksey Khoroshilov
9ed7e84644 MacOS, iOS: Replace dynamic comments in mig-generated files with stable ones.
Mig-generated files contain mig identifiers, which include timestamp and mig build info.
To improve build determinism and goma cachehits we can replace these lines with something stable.

Bug: crashpad:390
Change-Id: Iedb2f6e64428612899587c2ac4d488baf439961f
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3394052
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
2022-01-18 17:20:04 +00:00
Justin Cohen
243e1fd8e2 ios: Set EXC_SOFT_SIGNAL for signal exceptions.
Right now there's no clear way to differentiate between Signal and Mach
exceptions. Instead, set EXC_SOFT_SIGNAL as the top level exception for
signal exceptions, moving the signal number to ExceptionInfo() and
and the signal code plus the two previous values into Codes().

Fixed:crashpad:389
Change-Id: Ia57f402b98be2a648febb58b9dee0cb80d9e5954
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3388874
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Justin Cohen <justincohen@chromium.org>
2022-01-15 03:49:11 +00:00
Avi Drissman
824ddb2de1 Fix presubmit issues
- Formatted util/misc/initialization_state_dcheck.h
- Included build/build_config.h file in
  util/stdlib/aligned_allocator_test.cc as it uses an
  OS_* macro.

Change-Id: I8fb67f1ae440834d1b60f390658513a341789428
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3390648
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Avi Drissman <avi@chromium.org>
2022-01-15 00:09:21 +00:00
Avi Drissman
b560edd484 Remove ALLOW_UNUSED_LOCAL from Crashpad
Bug: 1286390
Change-Id: I9755258960c55bef84e01812a14067ffaf89d2b1
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3388879
Commit-Queue: Avi Drissman <avi@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
2022-01-14 23:11:32 +00:00
Avi Drissman
23375ab37c Use std::ignore rather than ignore_result in Crashpad
Bug: 1285085
Change-Id: I02f1eb608a704fe58b72c094b96af6c7577be4bf
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3373171
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Avi Drissman <avi@chromium.org>
2022-01-07 22:38:52 +00:00
Roland Bock
ee230eef02 Replace FALLTHROUGH macro with C++17 [[fallthrough]] attribute
See go/chromium-lsc-fallthrough

Bug:1283907
Change-Id: I786f3e7141ad47913043136d0173e3b82b223a87
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3370128
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
2022-01-07 19:26:52 +00:00
Mark Mentovai
7aec285110 Update mini_chromium to 0243b40af70e34c81fc8a30d9b15cd276b2d49ba
0243b40af70e win: Actually compile C++ as C++17, and fix __cplusplus
             macro

Change-Id: If430b97d1cf846746a5226638e04b3a2cdb5efce
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3372325
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
2022-01-07 19:04:12 +00:00
Mark Mentovai
4a539c714d Update mini_chromium to 6562d2d0b2a86026a0c8bfc89d95c0a547ed9e5e
6562d2d0b2a8 Compile as C++17 by using -std=c++17 (and /std:c++17 on
             Windows)

Change-Id: I10c209e8147425af77392e7649210ab68a5d27a7
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3371781
Reviewed-by: Joshua Peraza <jperaza@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
2022-01-07 01:36:02 +00:00
Nathan Mulcahey
ae39cec086 [util/net] Fix append to undefined defines
From the Fuchsia build:
```
 ERROR at //third_party/crashpad/util/BUILD.gn:658:7: Undefined identifier.
       defines += [ "CRASHPAD_USE_BORINGSSL" ]
       ^------
 See //src/developer/forensics/crash_reports/BUILD.gn:127:5: which caused the file to be included.
     "//third_party/crashpad/util",
     ^----------------------------
```

Change-Id: I1f563e5bb599b3a7a83ee8211037ee1d7464bd62
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3370891
Reviewed-by: Francois Rousseau <frousseau@google.com>
Commit-Queue: Francois Rousseau <frousseau@google.com>
Reviewed-by: Robert Sesek <rsesek@chromium.org>
2022-01-06 20:04:42 +00:00
Nathan Mulcahey
821d265ea9 [lss] Roll lss and update Fuchsia location
Fuchsia is currently pulling in lss twice, this rolls crashpad up to
HEAD and redirects the Fuchsia build to use the existing copy in our
dependencies.

Change-Id: Ib698ee72d3d1881d22128bc94a1f6f17185a0755
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3364805
Reviewed-by: Francois Rousseau <frousseau@google.com>
Commit-Queue: Francois Rousseau <frousseau@google.com>
2022-01-06 17:01:52 +00:00