Breaking:
sentry_value_increfnow returnssentry_value_tandsentry_value_decrefreturnsint(0 if freed). (#1763)
Features:
- Native: add opt-in async crash upload mode so crashed apps can exit early after crash data is captured, while the crash daemon finishes potentially large uploads in the background. (#1739)
- Native/Linux: symbolicate stack frames in the crash daemon. (#1747, #1764)
- Add a
transfer_timeoutoption for SDK-managed HTTP transports. (#1741) - Apple: use
os_sync_wait_on_addressfor the level-triggered waitable flag in the batcher on modern macOS(14.4+) and iOS(17.4+). (#1765) - Native/macOS: add thread names. (#1766)
- Add Upload-Metadata header to TUS requests. (#1795)
Fixes:
- Native/macOS: crash reports now include full stack traces for all threads. Previously, non-crashing threads showed only a single frame. (#1768)
- Native/Linux: resolve function names for the crashed thread's stacktrace from on-disk ELF symbol tables in the crash daemon, so the most important thread gets symbolicated without ptrace. (#1764)
- Finish active trace on crash. (#1667)
- Native/macOS: fix module
image_sizecomputation, which could have caused the symbolicator to misattribute every frame to the lowest-addressed image (typicallydyldorlibsystem). (#1740) - Native: raise
SENTRY_CRASH_MAX_MODULESfrom512to2048so processes that load many shared libraries no longer have their minidump module list truncated, which left frames in unrecorded modules without adebug_idand unsymbolicatable.
(#1738) - Reject overly deep JSON and msgpack payloads during deserialization. (#1727, #1748)
- Read lengths for variadic fingerprints. (#1730)
- Guard against JSON token allocation overflow on 32-bit platforms. (#1733)
- Windows: fix HTTP rate limit response header parsing. (#1732)
- POSIX: prevent condition-variable timeout overflow from busy-spinning flush and shutdown waits. (#1731)
- Native/macOS: fix thread stack descriptor. (#1726)
- Native/macOS: honor the
system_crash_reporter_enabledoption. (#1743) - Cap rate-limit retry-after values at 24 hours to prevent a MITM-provided response from disabling event delivery for the process lifetime. (#1744)
- Fix a shutdown-time use-after-free window in
sentry_close(). (#1750) - curl: free duplicate HTTP response headers to avoid potential leaks. (#1791)
- Native: validate ELF header entry sizes. (#1746)
- Native: clamp
module_countfrom the shared crash context. (#1770) - Prevent database cleanup from following symlinks in run and cache directories. (#1751)
- Structured logs: respect printf argument widths when extracting log parameters to avoid stack-data disclosure and corrupted attributes on 32-bit platforms. (#1752)
- Fix TOCTOU races in transaction/span refcounting by switching to the atomic decref return value. (#1763)
- Fix signed-to-unsigned cast in rate-limit parsing to prevent permanent event suppression. (#1790)
- Fix a potential out-of-bounds read when parsing non-NUL-terminated
sentry-traceheaders. (#1749) - Harden ELF note parsing against overflow and OOB reads. (#1773)
- Fix memory leak in session deserialization on malformed cached files. (#1789)
- Fix division by zero when breadcrumbs are disabled. (#1767)
- Native: escape JSON attachments. (#1771)
- Reject NaN sample rates. (#1788)
- Handle memory allocation failures during JSON serialization to prevent truncated output. (#1772)
- Guard against overflow in string cloning in internal string utilities. (#1787)
- Fix a file descriptor leak in old-run processing. (#1792)