forked from chromium/crashpad
-
Notifications
You must be signed in to change notification settings - Fork 48
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Sentry Patches #1
Open
jan-auer
wants to merge
564
commits into
master
Choose a base branch
from
getsentry
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Swatinem
pushed a commit
that referenced
this pull request
Sep 10, 2020
__builtin_trap uses ud2 on x86_64, producing a SIGILL. On arm64, it uses brk #1, producing a SIGTRAP. Test expectations must be adjusted accordingly. Bug: crashpad:345 Test: crashpad_snapshot_test MachOImageAnnotationsReader.CrashModuleInitialization, crashpad_util_test ExcServerVariants.*,ExceptionPorts.* Change-Id: I22e75b7b48b8887031b1d95f1cea8a09733daf49 Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/2386464 Commit-Queue: Mark Mentovai <[email protected]> Reviewed-by: Robert Sesek <[email protected]>
supervacuus
pushed a commit
to supervacuus/crashpad
that referenced
this pull request
Dec 12, 2022
…Body This bug was found when trying to upgrading the MSAN bots from Ubuntu 18.04 (where this codepath was not hit) to 20.04. The following MSAN error is produced when running HTTPTransport/HTTPTransport.* ==3496553==WARNING: MemorySanitizer: use-of-uninitialized-value #0 0x5616c540ad7d in __is_long buildtools/third_party/libc++/trunk/include/string:1674:33 getsentry#1 0x5616c540ad7d in size buildtools/third_party/libc++/trunk/include/string:1069:17 getsentry#2 0x5616c540ad7d in crashpad::(anonymous namespace)::HTTPTransportLibcurl::WriteResponseBody(char*, unsigned long, unsigned long, void*) third_party/crashpad/crashpad/util/net/http_transport_libcurl.cc:528:50 ... SUMMARY: MemorySanitizer: use-of-uninitialized-value buildtools/third_party/libc++/trunk/include/string:1674:33 in __is_long ORIGIN: invalid (0). Might be a bug in MemorySanitizer origin tracking. The memory is initialized in http_transport_test.cc:293, but MSAN gets confused. Given the message output by MSAN (ORIGIN: invalid (0). Might be a bug in MemorySanitizer origin tracking), this appears to be a bug in MSAN, not crashpad, so this CL suppresses the error. Bug: chromium: 1260217 Change-Id: I2d6a46e3489816270cc1fee776793ffafe0147e4 Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/4015160 Reviewed-by: Joshua Peraza <[email protected]> Commit-Queue: Thomas Anderson <[email protected]>
On both mingw and MSVC (when targeting < Windows 10)
It looks like macOS 13 only *sometimes* puts __crash_info in __DATA_DIRTY. Instead of splitting by version check, let's just look in __DATA_DIRTY if we can't find it in __DATA. Bug: chromium:1372165 Change-Id: I99d2e759c66841d982039449e83f8658259d7ed1 Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/4197706 Reviewed-by: Mark Mentovai <[email protected]> Commit-Queue: Leonard Grey <[email protected]>
ARM64 supports storing pointer authentication codes in the upper bits of a pointer. This mask can be used by LLDB to mimic ptrauth_strip and strip the pointer authentication codes. To recover an address from pointer with an authentication code, `AND` this mask with the pointer. If the platform does not support pointer authentication, or the range of valid addressees for a pointer was unaccessible, this field will be 0 and should be ignored. Change-Id: Ie5cef90802dd1e892d456195ab8874223eac6a1b Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/2773358 Commit-Queue: Justin Cohen <[email protected]> Reviewed-by: Mark Mentovai <[email protected]>
This CL cleans up types and code style comments from post-submit code review comments on https://crrev.com/c/4023618 . I also added fixes for potential overflows in varint length decoding and included new tests. Bug: crashpad:437 Change-Id: I0a3585036028d81f42d0d36e87cce4264f4ed9ad Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/4199705 Commit-Queue: Justin Cohen <[email protected]> Reviewed-by: Justin Cohen <[email protected]> Reviewed-by: Mark Mentovai <[email protected]>
This CL introduces a new class ScopedVMMap, a fork of ScopedVMRead which maps the memory using vm_remap() instead of reading it. This is useful for Annotations which use ScopedSpinGuard to protect reads from simultaneous writes; the in-process intermediate dump handler can try to take the spin guard when reading such an Annotation and skip reading it if it the spin guard could not be obtained. Change-Id: I60d7a48d1ba4e5d2dfdb44307b78b4d9ffb73560 Bug: crashpad:437 Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/4114550 Reviewed-by: Mark Mentovai <[email protected]> Commit-Queue: Ben Hamilton <[email protected]>
from documentation of `ProcessException` in `crashpad_wer.h`: ``` //! \param[in] handled_exceptions is an array of exception codes that the helper //! should pass on to crashpad handler (if possible). Pass nullptr and set //! num_handled_exceptions to 0 to pass every exception on to the crashpad //! handler. ``` fix the check to handle `num_handled_exceptions == 0` case to not filter out any exceptions. Bug: crashpad:439 Change-Id: Ic4559a730a26e37c7a8f13e6bcae7595d743924a Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/4206503 Commit-Queue: Alex Gough <[email protected]> Reviewed-by: Alex Gough <[email protected]>
This CL optionally integrates ScopedSpinGuard (an atomic boolean) with crashpad::Annotation. Subclasses of Annotation can choose to integrate ScopedSpinGuard into their Set(...) methods to ensure reads and writes are serialized. I didn't integrate this into StringAnnotation in this CL, but it'd be pretty trivial to do in a follow-up. Change-Id: I1c5b8982576b03f9780a57acb7627c9194f8f0ff Bug: crashpad:437 Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/4022484 Reviewed-by: Mark Mentovai <[email protected]> Commit-Queue: Ben Hamilton <[email protected]> Reviewed-by: Robert Sesek <[email protected]>
This CL integrates the new ScopedSpinGuard with the new LengthDelimitedRingBuffer into a new class, RingBufferAnnotation. RingBufferAnnotation is thread-safe both for reading and writing, and is suitable for streaming logs, trace events, and other high-throughput data streams. I included a load test (ring_buffer_annotation_load_test) which launches two threads which simultaneously write to and read from the RingBufferAnnotation. By default, reads and writes are serialized using ScopedSpinGuard, but passing the flag "--disable_spin_guard" to the test disables the spin guard on the reading side (which is expected to make the test fail). Change-Id: Ic8e28866d085d57e778c4f86bcb7492ef0638ab9 Bug: crashpad:437 Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/4023619 Reviewed-by: Robert Sesek <[email protected]> Reviewed-by: Mark Mentovai <[email protected]> Commit-Queue: Ben Hamilton <[email protected]>
Since iOS reads Annotations in-process, this CL updates the iOS intermediate dump handler to check each Annotation to see if it supports guarding concurrent reads and writes using ScopedSpinGuard. For any such Annotation, the in-process dump handler now tries (without spinning) to obtain the ScopedSpinGuard for the Annotation before reading its memory. If the ScopedSpinGuard cannot immediately be obtained, the in-process dump handler just skips writing the memory of the Annotation to the intermediate dump. (I'd like to follow up and thread down a Params object so we can experiment with adding an optional timeout to make this more reliable.) Change-Id: Ie6c9849fac94ab89b36364b07aea62326cabe552 Bug: crashpad:437 Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/4031730 Commit-Queue: Ben Hamilton <[email protected]> Reviewed-by: Mark Mentovai <[email protected]> Reviewed-by: Robert Sesek <[email protected]>
fix: make sure we reuse already found libcurl
mingw compilation fixes
meta: update 2023-02-07
Bug: 1415371 Change-Id: I9e1bd902494a664d4f07829e686803712fa8e7a8 Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/4255568 Reviewed-by: Mark Mentovai <[email protected]> Commit-Queue: Justin Cohen <[email protected]>
The test BaseAnnotationShouldNotSupportSpinGuard assumed NDEBUG builds always disabled DCHECK()s, but DCHECK_ALWAYS_ON overrides this. This CL fixes the test for NDEDBUG + DCHECK_ALWAYS_ON builds by using the DCHECK_IS_ON() macro to skip the test when DCHECKs are enabled. Change-Id: I7b64729568c5d3139ca777e27462d81eba931834 Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/4255429 Reviewed-by: Mark Mentovai <[email protected]> Commit-Queue: Ben Hamilton <[email protected]>
This is the only change needed to build crashpad against musl, yay! The reason this change is needed is that user_vfp is bionic-specific, and does not exist in glibc, dietlibc, uclibc, or musl. I have not (yet) tried running the tests against another libc. Bug: chromium:1380656 Change-Id: I2247352e1611a300dff995156d393508c8257039 Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/4255370 Reviewed-by: Mark Mentovai <[email protected]> Commit-Queue: Elly Fong-Jones <[email protected]>
Change-Id: I5a29f690a4512252d0d5730492f7fd4cec16ffaa Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/4262547 Commit-Queue: Justin Cohen <[email protected]> Reviewed-by: Mark Mentovai <[email protected]>
…RECORD The EXCEPTION_RECORD contains a NumberParameters field, which could store a value that exceeds the amount of space allocated for the ExceptionInformation array. Bug: chromium:1412658 Change-Id: Ibfed8eb6317e28d3addf9215cda7fffc32e1030d Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/4284559 Reviewed-by: Alex Gough <[email protected]> Commit-Queue: Robert Sesek <[email protected]>
Adds the dump_minidump_annotations tool (modified from jperaza's WIP code). This works similarly to Breakpad's minidump_dump tool, but: 1. Is available on Windows 2. Only dumps simple/vectored annotations and annotation objects instead of the entire minidump contents. Current use case for this is to be able to get a minidump's process type on Windows without having to go through symbolization, but there may be other use cases in the future. Bug: chromium:1006331 Change-Id: I392024e230c10ea18673b3cf0d0ad4793d21f5eb Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/4287994 Reviewed-by: Joshua Peraza <[email protected]> Commit-Queue: Brian Sheedy <[email protected]>
Since we no longer use `http_transport_socket` on Linux there is no need to depend on OpenSSL directly anymore. We use whatever the present `libcurl` implementation uses as its TLS implementation. Also moved the dependency discovery for Android (which we currently do not use) to `crashpad-util` to isolate it to its usage.
This reverts commit a63adda. 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 <[email protected]> > Reviewed-by: Mark Mentovai <[email protected]> Bug: 41489832 Change-Id: I2c6d3c3008047a6f79fb3bfddd8240a758ee645a Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/5599914 Reviewed-by: Mark Mentovai <[email protected]> Bot-Commit: Rubber Stamper <[email protected]> Commit-Queue: Takuto Ikuta <[email protected]>
…shpad into chore/update_2024_06_11
feat: add socks proxy support
fix: add metadata pointer check
crashpad increasingly depends on C++20 features through its base-library `mini_chromium`. This change vendors a `mini_chromium` fork compatible with C++17 compilers and removes the dependency on `std::ranges` in the `crashpad` UUID utilities. * Update submodule * Provide UUID initializer for Windows and Linuxes * use fully-qualified names * Use base:byte_span_from_ref helper * Reset mini_chromium submodule to getsentry fork * Update mini_chromium ref to fork branch
* fix: update mini_chromium to remove a left-over <span> include * Introduce more Ubuntu versions to uncover breaking behavior on older compilers * now add clang runners * Disable attribute warning for crashpad_util * disable attribute errors for crashpad_compat too * disable warnings for tools and client * disable warnings at interface * further warnings in tools and client * disable ignored-attributes in handler * disable ignored-attributes in handler rather handler_lib * get rid of warnings compile options in targets that link interface * ignore pedantic around compat/linux/signal.h * remove ignored diagnostic from compat/linux/signal.h * update mini_chromium
feat: parse <empty> proxy on Linux
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains patches for Sentry. Do not merge.