From 4c64d3f1ec6312cb42ff53b1010396c784dbc00e Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Wed, 2 Sep 2026 13:08:50 +0200 Subject: [PATCH] fix(native): Emit daemon completion at info level Null transport builds have no request to signal that crash processing finished. Keep the daemon completion marker available when debug logging is disabled so callers can wait for a successful shutdown. --- src/backends/native/sentry_crash_daemon.c | 2 +- tests/__init__.py | 4 ---- tests/test_integration_native.py | 15 +++++++++++++++ 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/backends/native/sentry_crash_daemon.c b/src/backends/native/sentry_crash_daemon.c index 369e3cd1d..c706991b9 100644 --- a/src/backends/native/sentry_crash_daemon.c +++ b/src/backends/native/sentry_crash_daemon.c @@ -4764,8 +4764,8 @@ sentry__crash_daemon_main(pid_t app_pid, uint64_t app_tid, HANDLE event_handle, } if (crash_processed) { // Mark as done - SENTRY_DEBUG("Marking crash state as DONE"); sentry__atomic_store(&ipc->shmem->state, SENTRY_CRASH_STATE_DONE); + SENTRY_INFO("Marking crash state as DONE"); } if (crash_processed || !is_parent_alive(ipc->parent_handle)) { sentry__crash_ipc_unlink(ipc); diff --git a/tests/__init__.py b/tests/__init__.py index ad20019e0..a8a895c83 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -158,10 +158,6 @@ def extract_request(httpserver_log, cond): def run( cwd, exe, args, expect_failure=False, env=None, wait_for_daemon=False, **kwargs ): - if wait_for_daemon: - assert ( - "log" in args or exe != "sentry_example" - ), "sentry_example needs 'log' when waiting for the daemon" if env is None: env = dict(os.environ) if kwargs.get("check"): diff --git a/tests/test_integration_native.py b/tests/test_integration_native.py index d7828645e..b55aad00b 100644 --- a/tests/test_integration_native.py +++ b/tests/test_integration_native.py @@ -75,6 +75,21 @@ def test_native_capture_crash(cmake, httpserver): assert_native_crash(envelope) +def test_native_null_transport_completion(cmake): + tmp_path = cmake( + ["sentry_example"], + {"SENTRY_BACKEND": "native", "SENTRY_TRANSPORT": "none"}, + ) + + run_crash( + tmp_path, + "sentry_example", + ["crash"], + env=dict(os.environ, SENTRY_DSN=""), + wait_for_daemon=True, + ) + + def test_native_on_crashed_last_run(cmake, httpserver): tmp_path = cmake(["sentry_example"], {"SENTRY_BACKEND": "native"}) httpserver.expect_oneshot_request("/api/123456/envelope/").respond_with_data("OK")