-
-
Notifications
You must be signed in to change notification settings - Fork 169
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
fix: better error messages in sentry_transport_curl
#777
Conversation
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.
Codecov Report
Additional details and impacted files@@ Coverage Diff @@
## master #777 +/- ##
==========================================
- Coverage 81.40% 81.33% -0.08%
==========================================
Files 53 53
Lines 6917 6928 +11
Branches 1108 1110 +2
==========================================
+ Hits 5631 5635 +4
- Misses 1176 1183 +7
Partials 110 110 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I hope curl guarantees that it at least always \0
-terminates that buffer even if it does not use anything.
We can ensure that it is 0-terminated when we pass the buffer to |
* 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]>
Up to now, we have 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 tocurl_easy_strerror()
in case the error buffer is empty.Fixes #774