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

fix: timestamp resolution to microseconds on Windows #1039

Merged
merged 3 commits into from
Sep 3, 2024

Conversation

ShawnCZek
Copy link
Contributor

@ShawnCZek ShawnCZek commented Sep 3, 2024

The timestamp resolution was changed to microseconds in #995. However, this has never correctly worked on Windows because SYSTEMTIME, a return value from the underlying call to GetSystemTime(), contains only milliseconds, not microseconds: https://learn.microsoft.com/en-us/windows/win32/api/minwinbase/ns-minwinbase-systemtime.

Instead, GetSystemTimeAsFileTime() can be used as its return value "contains a 64-bit value representing the number of 100-nanosecond intervals". This also helps in reducing two API calls to just one.

Copy link

codecov bot commented Sep 3, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 83.78%. Comparing base (4c47d97) to head (dda6e61).
Report is 1 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1039      +/-   ##
==========================================
+ Coverage   83.76%   83.78%   +0.01%     
==========================================
  Files          53       53              
  Lines        5512     5512              
  Branches     1198     1198              
==========================================
+ Hits         4617     4618       +1     
  Misses        781      781              
+ Partials      114      113       -1     

@ShawnCZek
Copy link
Contributor Author

Actually, on Windows 8 and later, GetSystemTimePreciseAsFileTime() is available, which is even more precise and is encouraged to be used by Microsoft: https://learn.microsoft.com/en-us/windows/win32/sysinfo/acquiring-high-resolution-time-stamps#guidance-for-acquiring-time-stamps

Copy link
Collaborator

@supervacuus supervacuus left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@supervacuus supervacuus merged commit a6ba26e into getsentry:master Sep 3, 2024
21 checks passed
@ShawnCZek ShawnCZek deleted the fix_usec_time_on_windows branch September 3, 2024 17:59
@dacap
Copy link

dacap commented Oct 7, 2024

This PR made any binary linked to sentry-native depends on GetSystemTimePreciseAsFileTime()/incompatible with Windows 7 by default (aseprite/aseprite#4691).

I know that probably we should not be compiling with _WIN32_WINNT >= 0x0602 to give support for Windows 7 (which is 0x0601), but actually we're compiling with _WIN32_WINNT=0x0A00 just to use Windows 10 APIs dynamically (known the API structures) and load functions dynamically.

Probably an approach like Microsoft's STL should be used for this:

https://github.com/microsoft/STL/blob/faccf0084ed9b8b58df103358174537233b178c7/stl/src/winapisupp.cpp#L161-L170

Where GetSystemTimePreciseAsFileTime is loaded dynamically if _STL_WIN32_WINNT < _WIN32_WINNT_WIN8 (do we need a SENTRY_WIN32_WINNT?).

At the moment we'll revert this change to continue giving support for Windows 7.

dacap added a commit to aseprite/sentry-native that referenced this pull request Oct 8, 2024
@ShawnCZek
Copy link
Contributor Author

I guess we would have to do something similar to the following:

pSetThreadDescription func = (pSetThreadDescription)GetProcAddress(
GetModuleHandleA("kernel32.dll"), "SetThreadDescription");
if (func) {
wchar_t *thread_name_wstr = sentry__string_to_wstr(thread_name);
HRESULT result = SUCCEEDED(func(thread_id, thread_name_wstr)) ? 0 : 1;
sentry_free(thread_name_wstr);
return SUCCEEDED(result) ? 0 : 1;
}

However, what is the stand on supporting operating systems that went EOL 4+ years ago, especially when done non-standardly by changing definitions? For instance, Sentry Native will not work properly for Windows XP using your technique because of instances like this (GetTickCount64 has only been available since Windows Vista):

// Fallback to GetTickCount() on QPC fail
if (!qpc_frequency.QuadPart) {
# if _WIN32_WINNT >= 0x0600
return GetTickCount64();
# else
return GetTickCount();
# endif
}

Frankly, I am not a maintainer of this library; it is up to the Sentry team how they want to resolve this. But I do hope we are not defaulting to the previous solution as it is inefficient and inaccurate, as discussed here: https://devblogs.microsoft.com/oldnewthing/20131101-00/?p=2763.

Likewise, I wish new systems were not disadvantaged because of supporting old systems that <1% of users use; GetSystemTimePreciseAsFileTime() turned out to be extremely precise in our case.

@dacap
Copy link

dacap commented Oct 8, 2024

We are still giving support for Windows Vista and 7 as we still have ~750 users on those platforms. Windows XP support was dropped and probably Vista and 7 will be dropped in a couple of years. But until we can keep working the code on those platforms that will be great.

The MSVC STL library is already doing this job of dynamically loading the function, probably we can just use __crtGetSystemTimePreciseAsFileTime() when compiling with MSVC.

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 <bda@sentry.io>

* 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 <loewenheim@users.noreply.github.com>

* 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 <lestat.de.lionkur@gmail.com>

* 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 <migosch@gmail.com>

* 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 <mischan@abovevacant.com>

* 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 <mischan@abovevacant.com>

* 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 <6349682+vaind@users.noreply.github.com>

Co-authored-by: Ivan Dlugos <6349682+vaind@users.noreply.github.com>

* 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 <mischan@abovevacant.com>

* 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 <mischan@abovevacant.com>

* 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 <mischan@abovevacant.com>

* Use shields for conan and vcpkg

* Update changelog

---------

Co-authored-by: Mischan Toosarani-Hausberger <mischan@abovevacant.com>

* 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 <mischan@abovevacant.com>

* 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 <mischan@abovevacant.com>

* 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] <support@github.com>
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 <mischan@abovevacant.com>

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

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

---------

Signed-off-by: Joel Winarske <joel.winarske@gmail.com>
Co-authored-by: Mischan Toosarani-Hausberger <mischan@abovevacant.com>

* 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 <lestat.de.lionkur@gmail.com>

* 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 <mischan@abovevacant.com>

* 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 <minko@quicktrurnstudio.com>
Co-authored-by: Mischan Toosarani-Hausberger <mischan@abovevacant.com>

* 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 <mischan@abovevacant.com>

* chore: typo

* chore: remove unnecessary warn

* chore: format

* chore: update CHANGELOG.md

---------

Co-authored-by: Mischan Toosarani-Hausberger <mischan@abovevacant.com>

* 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 <dragpmCASTjosh@gmail.com>
Co-authored-by: PlasmaDev5 <dragonCASTjosh@gmail.com>

* 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 <lestat.de.lionkur@gmail.com>
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Joel Winarske <joel.winarske@gmail.com>
Co-authored-by: relaxolotl <5597345+relaxolotl@users.noreply.github.com>
Co-authored-by: Arpad Borsos <arpad.borsos@sentry.io>
Co-authored-by: Sebastian Zivota <loewenheim@users.noreply.github.com>
Co-authored-by: Floris Bruynooghe <flub@sentry.io>
Co-authored-by: Betty Da <bda@sentry.io>
Co-authored-by: Mikhail Paulyshka <me@mixaill.tk>
Co-authored-by: getsentry-bot <bot@sentry.io>
Co-authored-by: Arpad Borsos <swatinem@swatinem.de>
Co-authored-by: getsentry-bot <bot@getsentry.com>
Co-authored-by: Bruno Garcia <bruno@brunogarcia.com>
Co-authored-by: zhaowq32 <zhaowq32@outlook.com>
Co-authored-by: Ivan Dlugos <6349682+vaind@users.noreply.github.com>
Co-authored-by: Vitalii Koshura <lestat.de.lionkur@gmail.com>
Co-authored-by: Chad Whitacre <chad@zetaweb.com>
Co-authored-by: Matt Johnson-Pint <matt.johnson-pint@sentry.io>
Co-authored-by: Mischan Toosarani-Hausberger <mischan@abovevacant.com>
Co-authored-by: Mischan Toosarani-Hausberger <migosch@gmail.com>
Co-authored-by: Edwin <git@olback.net>
Co-authored-by: espkk <espkk@protonmail.ch>
Co-authored-by: cnicolaescu <121427183+cnicolaescu@users.noreply.github.com>
Co-authored-by: Jan Lupčík <shawnlupen@seznam.cz>
Co-authored-by: pastdue <30942300+past-due@users.noreply.github.com>
Co-authored-by: Cyriuz <Cyriuz@users.noreply.github.com>
Co-authored-by: Martin Delille <martin@delille.org>
Co-authored-by: Markus Hintersteiner <markus.hintersteiner@sentry.io>
Co-authored-by: xyz1001 <zgzf1001@gmail.com>
Co-authored-by: Stefan Jandl <reg@bitfox.at>
Co-authored-by: Daniel Griesser <daniel.griesser.86@gmail.com>
Co-authored-by: sappho <sappho@sappho.io>
Co-authored-by: R. Savchenko <gmstima@gmail.com>
Co-authored-by: Alex Lorenz <arphaman@gmail.com>
Co-authored-by: Karl Heinz Struggl <kahest@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ivan Tustanivskyi <tustanivsky@gmail.com>
Co-authored-by: Strive-Sun <50010647+Strive-Sun@users.noreply.github.com>
Co-authored-by: Joel Winarske <joel.winarske@gmail.com>
Co-authored-by: Wojciech Minko <minko@quickturnstudio.com>
Co-authored-by: wojciech minko <minko@quicktrurnstudio.com>
Co-authored-by: Jan Lupčík <shawnczek@truckersmp.com>
Co-authored-by: JoshuaMoelans <60878493+JoshuaMoelans@users.noreply.github.com>
Co-authored-by: PlasmaDev5 <dragpmCASTjosh@gmail.com>
Co-authored-by: PlasmaDev5 <dragonCASTjosh@gmail.com>
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.

3 participants