Skip to content
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

meta: update 2023-02-07 #80

Merged
merged 24 commits into from
Feb 7, 2023
Merged

Conversation

supervacuus
Copy link
Collaborator

No description provided.

nmulcahey and others added 24 commits December 12, 2022 21:21
These third_party dependencies need to move to the `.../src` folder for Fuchsia.

Bug: b/258565335
Change-Id: I36a87cf0cca6461fa09fffc7a8c642e1b24edbaa
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/4097194
Commit-Queue: Nathan Mulcahey <[email protected]>
Reviewed-by: Francois Rousseau <[email protected]>
Bug: b/258565335
Change-Id: I49f05fb9a8eaf1b0c3d9c8c302ceb3c5340799c9
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/4099724
Commit-Queue: Nathan Mulcahey <[email protected]>
Reviewed-by: Francois Rousseau <[email protected]>
To support a new crashpad::RingBufferAnnotation type which can be safely
written to and read from simultaneously by different threads/processes,
this CL introduces a new class ScopedSpinGuard, which is a simple RAII
wrapper around an atomic boolean.

Change-Id: I5bafe6927a8dc2a3e25734cb941fd9fce9a8d139
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/4031729
Commit-Queue: Ben Hamilton <[email protected]>
Reviewed-by: Robert Sesek <[email protected]>
This CL implements LengthDelimitedRingBuffer, a general-purpose
ringbuffer suitable for use as a Crashpad Annotation.

This ringbuffer supports writing variably-sized data delimited by a Base
128 varint-encoded length separator.

LengthDelimitedRingBuffer is backed by a std::array, so it has a fixed
maximum size. It supports reading via RingBufferReader as well as
writing via RingBufferWriter.

Change-Id: I23ecb4a85ee8e846e1efc6937a5cb089a494d50a
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/4023618
Reviewed-by: Robert Sesek <[email protected]>
Commit-Queue: Ben Hamilton <[email protected]>
GN now does more iOS xcode project generation natively.

Change-Id: I0a133e648a9426cfc822e40af36c2626ddb58f68
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/4111089
Reviewed-by: Mark Mentovai <[email protected]>
Commit-Queue: Justin Cohen <[email protected]>
Change-Id: I5511911110b58b7accd0f78cc1094924bfbda71e
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/4114702
Reviewed-by: Justin Cohen <[email protected]>
Commit-Queue: Ben Hamilton <[email protected]>
Change-Id: I477919feec68d317ca3cb8a0d07022e9405156dd
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/4118347
Reviewed-by: Justin Cohen <[email protected]>
Commit-Queue: Ben Hamilton <[email protected]>
... as we move crashpad from //third_party/crashpad to
//third_party/crashpad/src

Change-Id: I081520ad44334cc83397234e5d16535d0db4806d
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/4132465
Reviewed-by: Francois Rousseau <[email protected]>
Commit-Queue: Jay Zhuang <[email protected]>
The try and catch macros were conditionally defined by libstdc++ pre-gcc
4.4 (2009-04-21), fixed in
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25191. Surely none of this
code would build with such an old libstdc++ any more, since Crashpas has
adopted modern C++ (C++11 and later). Remove this obsolete nod to
history.

Change-Id: Ie3cea1ecc1cfd358f27ea48f8111791e7f08bfa5
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/4136890
Reviewed-by: Robert Sesek <[email protected]>
Commit-Queue: Mark Mentovai <[email protected]>
... when compile target is Fuchsia

Change-Id: Id77babbd3dffff26c75a52296ac91101780e4c33
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/4132464
Reviewed-by: Francois Rousseau <[email protected]>
Commit-Queue: Jay Zhuang <[email protected]>
... when build is targeting Fuchsia

Change-Id: I03fab9368bd5e8687899a2efeb51736707bce81e
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/4137733
Commit-Queue: Jay Zhuang <[email protected]>
Reviewed-by: Francois Rousseau <[email protected]>
bind.h, callback.h, callback_forward.h, and callback_helpers.h
moved into /base/functional/. Update the include paths to
directly include them in their new location.

Bug: chromium:1364441
Change-Id: I23aaa16644c10ac5b607ea29d25799fbb08dfaca
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/4163072
Reviewed-by: Mark Mentovai <[email protected]>
Commit-Queue: Avi Drissman <[email protected]>
Much of crashpad's unittests propagate tagged pointers to fuchsia
syscalls which do not accept tagged values. Rather than fixing them all
right now, just ensure that the tests do not build with the hwasan
variant if enabled.

Bug: fxbug.dev/108368
Change-Id: Ib32eb95ba671a6b55694075b68c7fbbb733cf501
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/4175438
Reviewed-by: Francois Rousseau <[email protected]>
Commit-Queue: Francois Rousseau <[email protected]>
Bug: chromium:1373664
Change-Id: I948eac3a46e8ad0d6fe70413111641e77c7ae57c
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/4196074
Reviewed-by: Mark Mentovai <[email protected]>
Commit-Queue: Leonard Grey <[email protected]>
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]>
@supervacuus supervacuus requested a review from Swatinem February 7, 2023 08:36
@supervacuus supervacuus merged commit ec99257 into getsentry:getsentry Feb 7, 2023
@supervacuus supervacuus deleted the meta/update branch February 7, 2023 09:29
supervacuus added a commit to getsentry/sentry-native that referenced this pull request Feb 7, 2023
- Switch Crashpad transport on Linux to use libcurl ([#803](#803), [crashpad#75](getsentry/crashpad#75), [crashpad#79](getsentry/crashpad#79))
- Avoid accidentally mutating CONTEXT when client-side stack walking in Crashpad ([#803](#803), [crashpad#77](getsentry/crashpad#77))
- Fix various mingw compilation issues ([#794](#794), [crashpad#78](getsentry/crashpad#78))
- Updated Crashpad backend to 2023-02-07. ([#803](#803), [crashpad#80](getsentry/crashpad#80))
yucelalbar pushed a commit to mystaff/sentry-native that referenced this pull request Nov 12, 2024
* feat(tracing): Allow users to bind a transaction to the global scope (getsentry#632)

This adds in the ability to specify a transaction (aka a trace) to be
associated with all events being sent to sentry.

* feat(tracing): Basic span support with nesting (getsentry#634)

* feat(tracing): Retroactive unit test improvements (getsentry#637)

Retroactively applies some macros created in previous PRs 
to the rest of the tracing test suite. No functional changes.

* fix(tracing): Actually set the operation on a transaction (getsentry#647)

* fix: Read section names safely (getsentry#641)

Avoids a potential segfault reading the section names, and also falls back when `vm_readv` lacks permissions.

* fix: Revert to mmap-ing modules in the modulefinder (getsentry#642)

* tracing: Add transaction/span tag methods [NATIVE-442] (getsentry#626)

* feat(tracing): Allow transaction renaming [NATIVE-438] (getsentry#651)

* feat(tracing): Introduce structs for performance monitoring constructs (getsentry#649)

* ref(tracing): Update name of attached transaction in set_transaction [NATIVE-444] (getsentry#652)

* feat(tracing): Allow setting custom span status [NATIVE-441] (getsentry#648)

* feat: basic object merging (getsentry#650)

This has a basic recursive merging of sentry_value_t objects.
Generally values from the source object have preference, however when
the values of a key are objects themselves in both the target and the
source they are recursively merged.

Co-authored-by: Betty Da <[email protected]>

* feat(tracing): Spans now carry pointers to the Transactions they belong to (getsentry#656)

* feat: Implement distributed trace propagation (NATIVE-304) (getsentry#657)

This implements the `iter_headers` and something analogous to the `continue_from_headers` APIs.

* fix: Correct CMake `SENTRY_LIBRARY_TYPE` variable check (getsentry#662)

* fix: Read Windows Version from Registry (getsentry#623)

We were previously relying on the `kernel32.dll` version, as does
Crashpad. However that version can lag behind OS releases, which can
manifest itself as failing integration tests, as the version does not
match the one returned from python `platform.version()`.
This tries to use `ntoskrnl.exe` as the kernel version, but falls back to
`kernel32.dll` as before in case that does not work.

* fix: Apply default rate limit (getsentry#660)

The transport will now fall back to a default 60 second rate limit
when it receives a 429 response without additional headers.

* ref: Make API forward-compatible to Sampling Context (NATIVE-457) (getsentry#663)

* fix: Match sentry-trace header case-insensitively (getsentry#665)

* ref(tracing): Revert name change of sentry_transaction_start (getsentry#666)

* feat(tracing): Allow setting a scope on a span (getsentry#667)

* fix(tracing): Set max spans to the default amount when tracing is enabled (getsentry#669)

* feat: Add explicit flush method/hook (NATIVE-111) (getsentry#670)


Co-authored-by: Sebastian Zivota <[email protected]>

* feat(tracing): Always create spans even if they're unsampled (getsentry#668)

* test: Add integration test for envelope with transaction (getsentry#671)

This adds an integration test which inspects the envelope of a
transaction sent by the native SDK.

NATIVE-407

* release: 0.4.14

* meta: Manually draft a more detailed Changelog

* ref: Optimize JSON formatting (ISSUE-1379) (getsentry#674)

* fix: Correctly apply contexts from the scope (getsentry#676)

* release: 0.4.15

* feat: Include performance monitoring by default in experimental API, remove compile flag for feature (getsentry#678)

In addition to removing the flag, this also touches several test files.
This is because the removal of these flags has created several
double imports of sentry.h primarily in the test suite, which causes
compilation to fail.

* feat: Set special `SENTRY_SDK_NAME` for Android (getsentry#677)

* fix: Compile correct files for iOS breakpad exception_handler (getsentry#683)

* chore: list the libraries required to run tests (getsentry#684)

* feat: SDK name override (getsentry#686)

* Feat: Crashed last run (getsentry#685)

* ref/ci: Update black as well as Windows jobs to unbreak CI (getsentry#691, getsentry#692)

This aggressively bumps black up to a new version to fix
our linter jobs in CI. This is fine because the use of Python 
is exclusively confined to integration tests, which makes
the impact of this update fairly small.

This change also updates the CI to remove the job running
tests on a Windows Server 2016 environment as it is now
deprecated and can no longer be used. A job running
the same tests on Windows Server 2019 has been created
to replace the removed job, as `windows-latest` now
uses Windows Server 2022.

* ref: Switch the internal representation of project IDs from ints over to char*s (getsentry#690)

This tries to future-proof project IDs as they aren't guaranteed 
to be numbers forever. Project IDs are now treated as opaque 
strings, and minimal validation is now applied to them to reflect 
that fact.

* meta: Update break/crashpad to 2022-04-12 (NATIVE-506) (getsentry#696)

* meta: Update changelog for release (getsentry#697)

* feat: More aggressively prune the Crashpad database (getsentry#698)

* release: 0.4.16

* Fix library-only build with no examples. (getsentry#702)

This fixes getsentry#701

Signed-off-by: Vitalii Koshura <[email protected]>

* chore: Update changelog (getsentry#703)

* release: 0.4.17

* meta(gha): Deploy action enforce-license-compliance.yml (getsentry#704)

* chore: Update logo for dark or light theme (getsentry#709)

* feat: Allow disabling of the crash-handler backend at runtime. (getsentry#717)

Co-authored-by: Mischan Toosarani-Hausberger <[email protected]>

* fix: Only consider completed crash-reports for session status (getsentry#719)

* feat: API to add a stack trace to an exception or thread (getsentry#723)

* feat: Capture registers with inproc backend (FEEDBACK-1413) (getsentry#714)

* feat: Add run-time version info (getsentry#726)

* deps: Update Break/Crashpad to 2022-06-14 (getsentry#725)

* release: 0.4.18

* ref(session): align processing sequence in sentry__capture_event() with docs (getsentry#729)

processing sequence of sentry__capture_event() to align with the
docs/spec (https://develop.sentry.dev/sdk/sessions/#filter-order).

* fix: Make Windows ModuleFinder more resilient to missing Debug Info (getsentry#732)

Previously the Windows ModuleFinder would early-return in case the
loaded library had no debug directory / codeview record.
In that case, the image type and code-id would be missing which results
in normalization errors in Relay. We now always write the image type,
and the code-id as early as possible.

* feat: invoke on_crash when handling a crash (getsentry#724)

- don't invoke before_send if on_crash is set
- if on_crash returns false crash report will be discarded

* ref(on_crash): follow-up to make on_crash releasable (getsentry#734)

* mentioned in the header docs `before_send` vs `on_crash` behavior
* adapted `sentry__prepare_event` to provide a flag for backends on
  whether `before_send` should be invoked
* adapted backends to prevent running `before_send` even if `on_crash`
  returns true
* added `on_crash` vs `before_send` integration tests for `inproc` and
  `breakpad` (`crashpad` will follow)
* changed the signature of `on_crash` to be closer to `before_send`
* added remaining CHANGELOG entries for upcoming release

* ref: Terminate from crashpad handler with sensible return code (getsentry#738)

* fix: align default value for `environment` payload attribute with... (getsentry#739)

...the developer documentation:
https://develop.sentry.dev/sdk/event-payloads/#optional-attribute

* chore: update changelog with getsentry#739 (getsentry#741)

* fix: Iterate all debug directory entries (getsentry#740)

Turns out a PE file can have more than one debug directory entry.
We now iterate over all of them, trying to find the one that has a valid
CodeView record that we can use to get a debug_id from.

* ci: Bump compiler and OS versions (getsentry#742)


- bumps Linux CI host to Ubuntu 22.04
- bumps new gcc to 12, clang to 14
- bumps Android API/NDK to the latest versions (uses x86_64 images)
- renames CI jobs, so their names are version-independent (for easier updating)
- removes llvm apt repo
- replaces codechecker "manual" build with snap package
- update changelog with getsentry#740.

Co-authored-by: Mischan Toosarani-Hausberger <[email protected]>

* release: 0.5.0

* fix: linter complaint after version bump.

* feat: Update Crashpad and register WER handler (getsentry#735)

Crashpad added a new WER (Windows Error Reporting) handler which needs
to be manually registered first in the Windows Registry, and then with
the crashpad client.
This WER module is able to capture a wider range of crashes that would otherwise bypass the in-process structured exception handling (SEH) mechanism.

Co-authored-by: Mischan Toosarani-Hausberger <[email protected]>

* ci: add danger workflow (getsentry#751)

* fix: Be more defensive around transactions (getsentry#757)

This adds a bunch more NULL-checks for the outer opaque transaction/_ctx and span types.
Also removes the `span_free` function which was pretty much duplicated with span_decref.

* chore: update libunwindstack-ndk submodule (getsentry#759)

* chore: update libunwindstack-ndk submodule

synced with commit
235e2604e2fa3c1f8f7a68c5e285f9622e741e64

of upstream repo:
https://android.googlesource.com/platform/system/unwinding

here:
getsentry/libunwindstack-ndk#6

* Update changelog

* fix: define a timeout for android sim start (getsentry#764)

It happens regularly that the android simulator doesn't start (for whatever reason). But by default, that obsolete step runs until the default job timeout of 360 minutes is reached.

When starting successfully, this job step never reaches 6 minutes, so 10 minutes should give it more than enough time (and would still be within the bounds of our typical CI run end-to-end of ~15 mins).

* fix: Do not shut down winhttp transport on flush (getsentry#763)

* release: 0.5.1

* chore: update crashpad + breakpad 2022-10-17 (getsentry#765)

* chore: update crashpad + breakpad 2022-10-17

* Update changelog

* chore: Update changelog with community contributions (getsentry#766)

* release: 0.5.2

* ci: Update actions to get rid of deprecated... (getsentry#767)

...node.js runner versions:

https://github.blog/changelog/2022-09-22-github-actions-all-actions-will-begin-running-on-node16-instead-of-node12/

It might also be relevant for the deprecation of the `set-output` command:

https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/

which we also don't invoke directly but via our actions.

* specify python-version for setup-python

* Update changelog

* Update .github/workflows/ci.yml

Co-authored-by: Ivan Dlugos <[email protected]>

Co-authored-by: Ivan Dlugos <[email protected]>

* ci: upgrade ubuntu for old gcc job (getsentry#768)

* Search code-id in ".note" ELF sections (getsentry#775)

* release: 0.5.3

* Cover code-id from ELF section with test case (getsentry#776)

* fix: better error messages in `sentry_transport_curl` (getsentry#777)

Up to now, we only printed the numeric error code returned by
`curl_easy_perform()`, which isn't sensationally helpful to our users.

We now also print the contents of a `CURLOPT_ERRORBUFFER` and fall back
to `curl_easy_strerror()` in case the error buffer is empty.

* Update pads 2022-12-12 (getsentry#778)

* fix: increase curl headers buffer size to 512 (getsentry#784)

* fix: avoid race condition when starting bgw thread (getsentry#785)

* fix: avoid race condition when starting bgw thread

- specifically on Windows: the `sentry_thread_spawn` macro is defined as follows:

```
#    define sentry__thread_spawn(ThreadId, Func, Data)                         \
        (*ThreadId = CreateThread(NULL, 0, Func, Data, 0, NULL),               \
            *ThreadId == INVALID_HANDLE_VALUE ? 1 : 0)
```

We can see that `ThreadId` is initialized with the value returned by
`CreateThread`, but the new thread might be running before `CreateThread`
returns.

In this change a new function `sentry__thread_get_current_threadid` is
added, which returns the current thread id in a reliable way.

* Updated CHANGELOG.md

Co-authored-by: Mischan Toosarani-Hausberger <[email protected]>

* fix: open the file lock on "UNIX" with O_RDRW (getsentry#791)

For some reason, the file lock on UNIX was always opened using O_RDONLY.
This doesn't make sense in combination with O_TRUNC, since this is a
write operation. On some systems (customer-scenario was AWS EFS) this
will lead to an EBADF if we try to flock that descriptor. The docs
consider this combination undefined.

This change also gets rid of the AIX compile conditional, since this
should work on all systems now.

I also added a warning to the run-initialization in case we get an error
when trying to lock.

macOS-11 CI runner needed to be updated to llvm15:

https://github.com/actions/runner-images/blob/macOS-11/20230117.2/images/macos/macos-11-Readme.md

* Cleanup pre-release changelog (getsentry#793)

* release: 0.5.4

* fix: explicit breakpad C++17 dependency (getsentry#800)

Breakpad now uses features from C++17: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3954471

We should make this explicit via the `breakpad_client` target requirements. This change only creates a lower bound because, for compilers that support only parts of C++17, the build will not necessarily complain. For instance, `breakpad` uses `static_assert()` without a second message parameter, which was added with https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3928.pdf, which not all compilers will support that accept the C++17 standard (e.g., GCC only supports it starting from version 6).

The issue was initially raised here: https://github.com/getsentry/sentry-native/discussions/798#discussioncomment-4826165

* feat: Allow ending a session with a different status code (getsentry#801)

* Fixes for mingw builds (+ ARM64) (getsentry#794)

* chore: sync with recent crashpad changes (getsentry#803)

- Switch Crashpad transport on Linux to use libcurl ([getsentry#803](getsentry#803), [crashpad#75](getsentry/crashpad#75), [crashpad#79](getsentry/crashpad#79))
- Avoid accidentally mutating CONTEXT when client-side stack walking in Crashpad ([getsentry#803](getsentry#803), [crashpad#77](getsentry/crashpad#77))
- Fix various mingw compilation issues ([getsentry#794](getsentry#794), [crashpad#78](getsentry/crashpad#78))
- Updated Crashpad backend to 2023-02-07. ([getsentry#803](getsentry#803), [crashpad#80](getsentry/crashpad#80))

* ci: Add llvm-mingw (getsentry#797)

* fix: use void for all empty parameter-lists in C functions (getsentry#804)

This is one of many aspects where C and C++ standards deviate:

An empty parameter list in C++ is equivalent to a void parameter list. But in C, an empty parameter list meant: you could give any number of types as parameters.

With C11, this "feature" became obsolete: empty parameter lists are no longer standard-conforming C. Since some of those are in our API surface, we should fix this.

* chore: update breakpad 2023-02-08 (getsentry#805)

* fix: Add a linker script to enforce exported symbols (getsentry#363)

Co-authored-by: Mischan Toosarani-Hausberger <[email protected]>

* chore: update libunwindstack 2023-02-09 (getsentry#807)

* release: 0.6.0

* fix: Remove OpenSSL dependency for the crashpad backend on Linux (getsentry#812)

* fix: check for libcurl version and feature AsynchDNS (getsentry#813)

* Allow setting CRASHPAD_WER_ENABLED when using system crashpad (getsentry#816)

* Add conan, nix and vcpkg badge (getsentry#795)

* Add conan badge

* Update README.md

Co-authored-by: Mischan Toosarani-Hausberger <[email protected]>

* Use shields for conan and vcpkg

* Update changelog

---------

Co-authored-by: Mischan Toosarani-Hausberger <[email protected]>

* Pre-release changelog update (getsentry#825)

* release: 0.6.1

* fix: register with_crashpad_wer marker to get rid of the pytest warning (getsentry#826)

* feat: extend API with ptr/len-string interfaces (getsentry#827)

* Allow setting sdk_name at runtime (getsentry#834)

* release: 0.6.2

* chore: update crashpad 2023-05-03 (getsentry#837)

* chore: update breakpad 2023-05-03 (getsentry#836)

* feat: disable PC adjustment in the backend for libunwindstack (getsentry#839)

* feat: inspect/enrich event in crashpad backend (getsentry#843)

* feat: crashpad handler http-proxy support (getsentry#847)

* release: 0.6.3

* Fix compiler error with msvc on non-unicode system (getsentry#846)

* crashpad_handler: log body if minidump endpoint response is not OK (getsentry#851)

* chore: add top-level install directories to gitignore (getsentry#855)

* fix: use default level FATAL for crash events in all backends (getsentry#852)

---------

Co-authored-by: Mischan Toosarani-Hausberger <[email protected]>

* release: 0.6.4

* test: assert crash-level fatal in integration tests (getsentry#856)

* fix: deadlock in dynamic sdk-name scope init... (getsentry#858)

* release: 0.6.5

* Update README.md (getsentry#862)

* fix: conan-badge link in README.md (getsentry#867)

* Add docs link to readme (getsentry#868)

* docs: clarify behavior of sentry_flush + sentry_close (getsentry#883)

---------

Co-authored-by: Mischan Toosarani-Hausberger <[email protected]>

* chore: update libunwindstack 2023-09-13 (getsentry#884)

* chore: update crashpad 2023 09 28 (getsentry#891)

* chore: update breakpad 2023-10-02  (getsentry#892)

* release: 0.6.6

* fix: stuck crashpad_client on windows (getsentry#902)

* fix: disable sigaltstack on Android (getsentry#901)

* ci: change emulator boot-condition for android tests (getsentry#904)

* release: 0.6.7

* fix: Maintain client in crashpad state (getsentry#910)

* chore: update crashpad 2023-11-24 (getsentry#912)

* fix: crashpad build for Windows on ARM64 (getsentry#919)

* Remove options memory leak during consent setting (getsentry#922)

* fix: specify correct dependencies for CMake client projects... (getsentry#926)

...which use a system-provided breakpad (instead of our vendored fork).

The problem [here](getsentry#877)
was that people who introduce sentry-native via CMake `find_package()`
will get insufficient dependencies, which leads to configuration errors
in the client CMake project.

There are two aspects to this problem:
* if the user builds sentry as a shared library, it shouldn't be
necessary to specify the dependencies. This can be fixed by defining
`breakpad` as a `PRIVATE` dependency. This should also fix the Gentoo
issue because it uses sentry as a shared library afaict.
* if the user builds sentry as a static library, then we must stay with
the `PUBLIC` dependency, but we also need to correctly search for
`breakpad`, `libcurl`, and `pthread` in the context of the client project.

* build: make crashpad the default backend on Linux (getsentry#927)

* fix: remove the SENTRY_CRASHPAD_SYSTEM build option (getsentry#928)

* include <windows.h> to ensure that sentry.h is modularized correctly (getsentry#935)

* release: 0.7.0

* build: remove obsolete CRASHPAD_WER_ENABLED (getsentry#950)

* build: remove obsolete CRASHPAD_WER_ENABLED

we initially introduced the build flag because of a potentially missing struct member if an older target version than 19041 was selected in a build:

getsentry/crashpad#70

But upstream fixed that with a local compatibility struct a while ago:

https://chromium.googlesource.com/crashpad/crashpad/+/ca928c8d6b651b7123f1a5cad36dba08ca2416bc

That means we can get rid of the build-flag entirely, because this will build on all supported platforms and add a runtime version check for `build == 19041`, so that we don't even register the module (including not polluting the registry) on WER versions that don't support fast-fail crashes .

* docs: provide example for breadcrumb data property (getsentry#951)

* chore: add note about experimental state of standalone SDK (getsentry#952)

* ci: build zlib for mingw (getsentry#964)

* fix: failing clang-asan/llvm-cov tests (getsentry#965)

* Update Python test dependencies
* Update clang on Linux to 15.0.7
* Adapt mmap_rnd_bit according to actions/runner-images#9513

* build(deps): bump black from 24.2.0 to 24.3.0 in /tests (getsentry#967)

Bumps [black](https://github.com/psf/black) from 24.2.0 to 24.3.0.
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](psf/black@24.2.0...24.3.0)

---
updated-dependencies:
- dependency-name: black
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Add user feedback capability to the Native SDK (getsentry#966)

* release: 0.7.1

* feat: add gzip transport encoding (getsentry#954)

---------

Co-authored-by: Mischan Toosarani-Hausberger <[email protected]>

* fix: exclude custom_logger from transport test-suite (getsentry#968)

* fix: Linux build targeting RISC-V (getsentry#972)

---------

Signed-off-by: Joel Winarske <[email protected]>
Co-authored-by: Mischan Toosarani-Hausberger <[email protected]>

* test: integration-tests for transport compression (getsentry#969)

* feat: enable automatic MIME detection for crashpad attachments. (getsentry#973)

* release: 0.7.2

* docs: Add SENTRY_TRANSPORT_COMPRESSION to the README (getsentry#976)

Signed-off-by: Vitalii Koshura <[email protected]>

* fix: allow crashpad to run with Epic's Anti-Cheat client. (getsentry#980)

* fix: android test emulator start-script (getsentry#984)

* fix: android test emulator start-script

* Update start-android.sh

* Update start-android.sh

* pin android-test images to macOS 12

* try macOS 13 for the Android test runners

* pin to macOS 12 since 13 also failed

* Add clearer logging to emulator start script

* fix typo

* fix: store transaction `data` in event `extra` (getsentry#986)

* Move NDK from sentry-java to sentry-native (getsentry#944)

* Added initial poc

* Re-structure package names to NDK

* Post PoC cleanup

* setup module name for prefab

* Prepare for publishing

* Switch to shared STL instead of static

* Wire ndk artifact generation with github actions

* Fix distDir

* Update Changelog

* Setup Java/Gradle for CI

* Update READMEs

* Fix typos

* Build libraries with c++_shared to comply with prefab

* Address PR feedback

* fix: correctly support stack overflows across platforms (getsentry#982)

* fix: stack-overflow handling on Windows

* black

* docs

* add warning exception for recursion example

* ignore tests on other platforms

* temporary reason to fix pytests

* De Morgan

* disable sibling call optimization to provoke stack-overflow on Linux

* Simplify crash-trigger across gcc/clang for `sentry_example`

* Check whether old NDK build can be fixed with dynamic sigaltstack.

* Ensure we check not only sigaltstack errors but also invalid stacks

* better reflect the two changes in the change-log.

* Fix path to ndk module (getsentry#990)

* Ensure the proper artifacts are uploaded to gcs/maven (getsentry#992)

* release: 0.7.4

* Add missing .mvn wrapper

* feat: change the timestamp resolution to microseconds (getsentry#995)

* ci: update GHA deps to non-deprecated versions (getsentry#993)

* Use static STL, hide it from prefab (getsentry#996)

* Use static STL, hide it from prefab

* Update Changelog

---------

Co-authored-by: Mischan Toosarani-Hausberger <[email protected]>

* release: 0.7.5

* fix: point crashpad submodule to getsentry branch (getsentry#1000)

* fix: crashpad build for Windows ARM64 via LLVM-MINGW (getsentry#1003)

* ci: update llvm-mingw to 20240518 with LLVM 18.1.6

* ci: update ninja-build to 1.12.1

* fix: crashpad build for Windows ARM64 via LLVM-MINGW

* Ensure `crashpad` targets are included when building as a shared library using our exported CMake config

Also, in the exported CMake config, Use `find_dependency()` instead of `find_package()`.

---------

Co-authored-by: wojciech minko <[email protected]>
Co-authored-by: Mischan Toosarani-Hausberger <[email protected]>

* fix: replace find_package() with find_dependency() in crashpad config (getsentry#1008)

* release: 0.7.6

* docs: reflect Linux default backend in README.md (getsentry#1009)

* chore: Update crashpad to 2024-06-11 (getsentry#1014)

* chore: Update crashpad to 2024-06-11

* update macos test images to 14 (adding one for 12)

* fix breakpad-backend compiler break in macOS >= 12 GHA runner image.

* fix crashpad xcode-llvm breakage

* fix quote typo

* Use macOS 13 instead of 12 as the older fallback

* move the macOS asan build to macOS 12

* Try to inject `-fexperimental-library` for the llvm clang asan build

* Remove build-step macos llvm asan build

* Add experimental library via cmake.py

* add the library search path for the clang experimental lib

* Get rid of the warning noise

* Ignore realizeClassWithoutSwift leaks

* document asan suppression

Also, try to remove the suppression for libcurl 7.77.0 added here:

getsentry#827 (comment)

since the libcurl version retrieved from the SDK is now 7.85.0

* re-introduce SCDynamicStoreCopyProxies suppression

* update crashpad to getsentry head

* fix: further dependency export cleanup (getsentry#1013)

* fix: further dependency use/export cleanup

* uppercase COMPONENTS in find_dependency

* find_dependency(ZLIB) when CRASHPAD_ZLIB_SYSTEM=On

* add _SENTRY_PLATFORM_LIBS only as PRIVATE to target `sentry`

* update changelog

* fix: crashpad scope flushing synchronization (getsentry#1019)

* fix: clean-up scope application for crash-events

* explicitly sync handler flushing with atomics

* reenable flushing on Windows due to WER module
* TODO: std::memory_order_[relaxed|acquire|release]

* replace std::atomic<bool> with std::atomic_flag...

...which ensures block-free synchronization on all platforms.

* Revert "replace std::atomic<bool> with std::atomic_flag..."

This reverts commit 562f7c2.

* Clean up memory order and assert atomics to be lock-free

* Update changelog

* Fix python lint

* Conditionally exclude handler flush from non-linux/-windows builds

* Update crashpad reference after merging fork PR onto getsentry

* fix: user-feedback comment guard (getsentry#1020)

* release: 0.7.7

* feat: stream envelope directly to file (getsentry#1021)

* ci: introduce codecov token (getsentry#1025)

Additionally, bump `codecov-action` to 4.5.0

* feat: support 16kb page size on Android 15 (getsentry#1028)

* release: 0.7.8

* fix: check file-writer construction when writing envelope to path (getsentry#1036)

* fix: check file-writer construction when writing envelope to path

* update changelog.

* clang-format

* add a powershell convenience test-runner

* clarify platform support for `sentry_handle_exception()`

* release: 0.7.9

* Update bug_report.md

* fix: timestamp resolution to microseconds on Windows (getsentry#1039)

* fix: timestamp resolution to microseconds on Windows

* chore: changelog comment

* feat: prefer GetSystemTimePreciseAsFileTime for the timestamp resolution on Windows

* release: 0.7.10

* ci: isolate version-string from formatting

* feat: check validity of trace- and span-id in context update from header (getsentry#1046)

* Added draft test scenario for invalid trace_id

* test: invalid span id from header test cases

* feat: trace- and span-id checks in context update from header

* chore: format code

* fix: free memory of string on invalid input

* test: add empty span-id test

* fix: free memory of parent_span_id on invalid input

* chore: update CHANGELOG.md

* chore: add warning on invalid input

* test: use correct string to compare expected span_id with

* Apply suggestions from code review

* chore: format updated code

* chore: update CHANGELOG.md

* build: add `-DisableCapture` switch to Windows test-runner (getsentry#1048)

* fix: adjusted memcpy size param to match remaining destination size (getsentry#1047)

* fix: adjusted memcpy size param to match remaining destination size

* fix: add null termination character

* fix: look up `GetSystemTime()` implementations at runtime. (getsentry#1051)

* fix: look up `GetSystemTime()` implementations at runtime.

* Add calling convention.

* fix: don't fail `crashpad` startup on invalid `DSN` (getsentry#1059)

* fix: allow for empty DSN to start crashpad handler

* chore: format code

* chore: format code

* fix: no unnecessary string wrap

Co-authored-by: Mischan Toosarani-Hausberger <[email protected]>

* chore: typo

* chore: remove unnecessary warn

* chore: format

* chore: update CHANGELOG.md

---------

Co-authored-by: Mischan Toosarani-Hausberger <[email protected]>

* Setup CodeQL (getsentry#1058)

* ci: cancel in-progress workflow runs on same branch (getsentry#1061)

* fix: remove a potential overflow before conversion (getsentry#1062)

* fix: remove a potential overflow before conversion

This is in response to CodeQL security scan alert #1-#3.

`Elf[32|64]_Ehdr[.e_phnum|.e_phentsize|.e_shnum|.e_shentsize]` are all `uint16_t`, this means the loop-var `i` is bounded by `uint16_t` and should fit in a `uint32_t` (to prevent unsigned overflow in the loop). A switch to unsigned still makes sense, because we reduce the future chance of unnecessary signed overflow (=UB) in the loop body.

All program/section-header table entry sizes are cast to `uin64_t` even though the multiplication is bound to `uint32_t` by both factors being bound by `uint16_t`. This fixes the potential overflow before conversion to the bigger type.

* also safely cast the access to section header string table.

* release: 0.7.11

* chore: add clang-format to venv (getsentry#1066)

* chore: make format

* roll-back linter changes in CI

* chore: add clang-format to venv

* more references to clang-format

* chore: precommit hook must not check deleted or renamed files (getsentry#1071)

* feat: add breadcrumb ringbuffer to avoid O(n) memmove (getsentry#1060)

* feat: initial ringbuffer implementation

* chore: cleanup code

* chore: added todo

* removed unnecessary buffer end value

* changed buffer start_idx storage to [0]

* fixed issues in new storing method

* updated test to new ringbuffer append logic

* refactor: renamed to sentry__value_append_ringbuffer

* test: removed old bounded append test

* chore: update CHANGELOG.md

* chore: update CHANGELOG.md

* chore: linting

* increase refcount of ringbuffer-to-list items

* apply suggestion from code review

* added ringbuffer test

* fixed ringbuffer to list conversion

* direct access to ringbuffer items

* updated test with proper refcount check

* removed unnecessary decref from test

* added decref of temporary ringbuffer list

* removed double cloning

* changing types from int32_t to size_t

* moved declaration from public to private header

* added decref

* type conversion

* applied suggestions from code review

* feat: expose function to send minidumps (getsentry#1067)

* feat: programmatic minidump capture

This provides a new function that will allow for independently created minidumps to be captured by sentry

Resolves: getsentry#1050

* fixed compile errors

* Rework of programmatic minidumps based on feedback

* Remove unused parameters

* Address Lint errors

* Address more review feedback

* Address Lint errors

* Address more lint errors

* changed from bool to int due to undefined errors

* Address review feedback

* Work on addressing feedback, example and test

* Fixes to lint errors

* Apply comment suggestion

* Add empty line to file end

* use parameter directly

* chore: fix changelog

* add capture_minidump_n

* feat: capture minidump from path

* chore: update changelog

* cleanup

* linter issues

* cleanup, review changes, docs

* chore: fixup doc

* Update CHANGELOG.md

---------

Co-authored-by: PlasmaDev5 <[email protected]>
Co-authored-by: PlasmaDev5 <[email protected]>

* docs: clarify macOS support of the `inproc` backend (getsentry#1072)

* docs: clarify macOS support of the `inproc` backend

* apply review feedback + minor wording fixes

* reference advanced usage section

* ci: replace macos-12 action runners (getsentry#1073)

* ci: replace macos-12 action runners

* add listing installed images to android start script

* specify path to android tools for sdkmanager

* use cmdline-tools for sdkmanager + avdmanager

* switch to macos-14 since macos-15 has no android cmd-tools

* try x64 macos images

* list sdkmanager images and try to update to check if tooling works at all

* switch back to macos-15 verify installable setup

* remove update from android start script again

* ensure images are installed

* accept android image licenses automatically

* pre-accept licenses

* start the emulator blocking so we can see any issues during startup

* check emulator acceleration before starting the emulator

* switch back x86[_64] images

* re-enable emulator run in background

* expose llvm18 bin directory for macos15 runners on PATH

* revert last commit to macos-15 only

* fix quotes

* bump old android api/ndk

* lower end android on x86_64 + llvm-cov on macos-15-large

* android lower end only available on x86 + increase timeout to 20 minutes

* install NDK package together with target image

* update lower end android to API level 21 (keep NDK23)

* switch lower end to API 35 but keep NDK at 23

* max API for NDK23 is 31 (but the emulator started)

* define adb and emulator ports

* introduce emulator and adb port to start script

* use ADB_SERVER_PORT as the env variable from the workflow

* start also the non-blocking emulator with the right port

* get rid of lower emulator test

* get rid of emulator and adb port in start-android.sh

* release: 0.7.12

---------

Signed-off-by: Vitalii Koshura <[email protected]>
Signed-off-by: dependabot[bot] <[email protected]>
Signed-off-by: Joel Winarske <[email protected]>
Co-authored-by: relaxolotl <[email protected]>
Co-authored-by: Arpad Borsos <[email protected]>
Co-authored-by: Sebastian Zivota <[email protected]>
Co-authored-by: Floris Bruynooghe <[email protected]>
Co-authored-by: Betty Da <[email protected]>
Co-authored-by: Mikhail Paulyshka <[email protected]>
Co-authored-by: getsentry-bot <[email protected]>
Co-authored-by: Arpad Borsos <[email protected]>
Co-authored-by: getsentry-bot <[email protected]>
Co-authored-by: Bruno Garcia <[email protected]>
Co-authored-by: zhaowq32 <[email protected]>
Co-authored-by: Ivan Dlugos <[email protected]>
Co-authored-by: Vitalii Koshura <[email protected]>
Co-authored-by: Chad Whitacre <[email protected]>
Co-authored-by: Matt Johnson-Pint <[email protected]>
Co-authored-by: Mischan Toosarani-Hausberger <[email protected]>
Co-authored-by: Mischan Toosarani-Hausberger <[email protected]>
Co-authored-by: Edwin <[email protected]>
Co-authored-by: espkk <[email protected]>
Co-authored-by: cnicolaescu <[email protected]>
Co-authored-by: Jan Lupčík <[email protected]>
Co-authored-by: pastdue <[email protected]>
Co-authored-by: Cyriuz <[email protected]>
Co-authored-by: Martin Delille <[email protected]>
Co-authored-by: Markus Hintersteiner <[email protected]>
Co-authored-by: xyz1001 <[email protected]>
Co-authored-by: Stefan Jandl <[email protected]>
Co-authored-by: Daniel Griesser <[email protected]>
Co-authored-by: sappho <[email protected]>
Co-authored-by: R. Savchenko <[email protected]>
Co-authored-by: Alex Lorenz <[email protected]>
Co-authored-by: Karl Heinz Struggl <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ivan Tustanivskyi <[email protected]>
Co-authored-by: Strive-Sun <[email protected]>
Co-authored-by: Joel Winarske <[email protected]>
Co-authored-by: Wojciech Minko <[email protected]>
Co-authored-by: wojciech minko <[email protected]>
Co-authored-by: Jan Lupčík <[email protected]>
Co-authored-by: JoshuaMoelans <[email protected]>
Co-authored-by: PlasmaDev5 <[email protected]>
Co-authored-by: PlasmaDev5 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants