From 830d71b05d0981722eb6e1d86863be60b9d19328 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Fri, 15 May 2026 11:49:21 +0200 Subject: [PATCH 1/6] docs: update notes and limitations Remove the stale macOS crashpad attachment limitation and document that Windows fast-fail crashes bypass local hooks for both crashpad and native backends. Co-Authored-By: OpenAI Codex --- README.md | 15 +++++++-------- include/sentry.h | 16 ++++++++-------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 496374ff92..917a250882 100644 --- a/README.md +++ b/README.md @@ -365,14 +365,13 @@ Other important configuration options include: process, and can thus not properly terminate sessions or call the registered `before_send` or `on_crash` hook. It will also lose any events that have been queued for sending at the time of the crash. -- The Crashpad backend on Windows supports fast-fail crashes, which bypass SEH (Structured - Exception Handling) primarily for security reasons. `sentry-native` registers a WER (Windows Error - Reporting) module, which signals the `crashpad_handler` to send a minidump when a fast-fail crash occurs - But since this process bypasses SEH, the application's local exception handler is no longer invoked, which - also means that for these kinds of crashes, `before_send` and `on_crash` will not be invoked before - sending the minidump, and thus have no effect. -- When using the crashpad backend on macOS, the list of attachments that will be sent - along with crashes is frozen at the time of `sentry_init`. +- The crashpad and native backends on Windows support fast-fail crashes, which bypass + SEH (Structured Exception Handling) primarily for security reasons. `sentry-native` + registers a WER (Windows Error Reporting) module, which signals the out-of-process + crash handler when a fast-fail crash occurs. Since this bypasses SEH, the + application's local exception handler is not invoked, which also means that for + these kinds of crashes, `before_send` and `on_crash` will not be invoked before + sending the crash report, and thus have no effect. ## Benchmarks diff --git a/include/sentry.h b/include/sentry.h index 63fa2720c4..0498e86ec7 100644 --- a/include/sentry.h +++ b/include/sentry.h @@ -1154,10 +1154,10 @@ SENTRY_API void sentry_options_set_send_default_pii( * * https://develop.sentry.dev/sdk/sessions/#filter-order * - * On Windows the crashpad backend can capture fast-fail crashes which bypass - * SEH. Since the `before_send` is called by a local exception-handler, it will - * not be invoked when such a crash happened, even though a minidump will be - * sent. + * On Windows the crashpad and native backends can capture fast-fail crashes + * which bypass SEH. Since the `before_send` callback is called by a local + * exception-handler, it will not be invoked when such a crash happened, even + * though a crash report will be sent. */ typedef sentry_value_t (*sentry_event_function_t)( sentry_value_t event, void *hint, void *user_data); @@ -1215,10 +1215,10 @@ SENTRY_API void sentry_options_set_before_send( * * - does not work with crashpad on macOS. * - for breakpad on Linux the `uctx` parameter is always NULL. - * - on Windows the crashpad backend can capture fast-fail crashes which - * bypass SEH. Since `on_crash` is called by a local exception-handler, it - * will not be invoked when such a crash happened, even though a minidump - * will be sent. + * - on Windows the crashpad and native backends can capture fast-fail crashes + * which bypass SEH. Since `on_crash` is called by a local + * exception-handler, it will not be invoked when such a crash happened, even + * though a crash report will be sent. */ typedef sentry_value_t (*sentry_crash_function_t)( const sentry_ucontext_t *uctx, sentry_value_t event, void *user_data); From 70dda18f594cc6c52e8703644c6af5d3f3cc2269 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Fri, 15 May 2026 17:01:44 +0200 Subject: [PATCH 2/6] docs(native): Update screenshot backend note Mention that the native backend can also capture screenshots for fast-fail crashes. Co-Authored-By: OpenAI Codex --- include/sentry.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/sentry.h b/include/sentry.h index 0498e86ec7..7981a9dbe4 100644 --- a/include/sentry.h +++ b/include/sentry.h @@ -1618,8 +1618,8 @@ SENTRY_API void sentry_options_add_view_hierarchy_n( * * This feature is currently supported by all backends on Windows. The * `crashpad` and `native` backends capture screenshots from an out-of-process - * handler. Only the `crashpad` backend can capture screenshots of fast-fail - * crashes that bypass SEH (structured exception handling). + * handler. Only the `crashpad` and `native` backends can capture screenshots of + * fast-fail crashes that bypass SEH (structured exception handling). * * To decide per-event whether a screenshot should be captured, set a * `before_screenshot` callback via `sentry_options_set_before_screenshot`. From b014af06b01f96a635e90497af884f348242e25c Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Fri, 15 May 2026 17:45:35 +0200 Subject: [PATCH 3/6] restore wrapping --- README.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 917a250882..ae2ba056b4 100644 --- a/README.md +++ b/README.md @@ -365,12 +365,11 @@ Other important configuration options include: process, and can thus not properly terminate sessions or call the registered `before_send` or `on_crash` hook. It will also lose any events that have been queued for sending at the time of the crash. -- The crashpad and native backends on Windows support fast-fail crashes, which bypass - SEH (Structured Exception Handling) primarily for security reasons. `sentry-native` - registers a WER (Windows Error Reporting) module, which signals the out-of-process - crash handler when a fast-fail crash occurs. Since this bypasses SEH, the - application's local exception handler is not invoked, which also means that for - these kinds of crashes, `before_send` and `on_crash` will not be invoked before +- The crashpad and native backends on Windows support fast-fail crashes, which bypass SEH (Structured + Exception Handling) primarily for security reasons. `sentry-native` registers a WER (Windows Error + Reporting) module, which signals the out-of-process crash handler when a fast-fail crash occurs. + Since this bypasses SEH, the application's local exception handler is not invoked, which + also means that for these kinds of crashes, `before_send` and `on_crash` will not be invoked before sending the crash report, and thus have no effect. ## Benchmarks From c781b99ef674108cddbf0cc2b87b0ff5419bef33 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Fri, 15 May 2026 17:47:11 +0200 Subject: [PATCH 4/6] docs: Improve Windows backend note wording Lead with the platform to make the fast-fail limitation note read more naturally. Co-Authored-By: OpenAI Codex --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ae2ba056b4..3c04663888 100644 --- a/README.md +++ b/README.md @@ -365,7 +365,7 @@ Other important configuration options include: process, and can thus not properly terminate sessions or call the registered `before_send` or `on_crash` hook. It will also lose any events that have been queued for sending at the time of the crash. -- The crashpad and native backends on Windows support fast-fail crashes, which bypass SEH (Structured +- On Windows, the crashpad and native backends support fast-fail crashes, which bypass SEH (Structured Exception Handling) primarily for security reasons. `sentry-native` registers a WER (Windows Error Reporting) module, which signals the out-of-process crash handler when a fast-fail crash occurs. Since this bypasses SEH, the application's local exception handler is not invoked, which From 19e0887c3a83826ad06eddb0e5c4a603f4fe7a1a Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Fri, 15 May 2026 17:54:10 +0200 Subject: [PATCH 5/6] Revert unnecessary changes --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3c04663888..742a9e68b2 100644 --- a/README.md +++ b/README.md @@ -368,7 +368,7 @@ Other important configuration options include: - On Windows, the crashpad and native backends support fast-fail crashes, which bypass SEH (Structured Exception Handling) primarily for security reasons. `sentry-native` registers a WER (Windows Error Reporting) module, which signals the out-of-process crash handler when a fast-fail crash occurs. - Since this bypasses SEH, the application's local exception handler is not invoked, which + But since this process bypasses SEH, the application's local exception handler is no longer invoked, which also means that for these kinds of crashes, `before_send` and `on_crash` will not be invoked before sending the crash report, and thus have no effect. From 2515480b4286f4bbf187578387f0e4c47c83ffe2 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Fri, 15 May 2026 18:04:41 +0200 Subject: [PATCH 6/6] On Windows, the... --- include/sentry.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/sentry.h b/include/sentry.h index 7981a9dbe4..93405841c3 100644 --- a/include/sentry.h +++ b/include/sentry.h @@ -1154,7 +1154,7 @@ SENTRY_API void sentry_options_set_send_default_pii( * * https://develop.sentry.dev/sdk/sessions/#filter-order * - * On Windows the crashpad and native backends can capture fast-fail crashes + * On Windows, the crashpad and native backends can capture fast-fail crashes * which bypass SEH. Since the `before_send` callback is called by a local * exception-handler, it will not be invoked when such a crash happened, even * though a crash report will be sent. @@ -1215,7 +1215,7 @@ SENTRY_API void sentry_options_set_before_send( * * - does not work with crashpad on macOS. * - for breakpad on Linux the `uctx` parameter is always NULL. - * - on Windows the crashpad and native backends can capture fast-fail crashes + * - on Windows, the crashpad and native backends can capture fast-fail crashes * which bypass SEH. Since `on_crash` is called by a local * exception-handler, it will not be invoked when such a crash happened, even * though a crash report will be sent.