From 63473f1b22acc142197d7f68f008306d35cdbd22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hanno=20J=2E=20G=C3=B6decke?= Date: Tue, 28 Oct 2025 13:31:55 +0100 Subject: [PATCH 1/2] feat(ndk): handle native init failure code and document change --- CHANGELOG.md | 4 ++++ .../test/java/io/sentry/android/core/NdkIntegrationTest.kt | 2 ++ .../src/main/java/io/sentry/android/ndk/SentryNdk.java | 6 +++++- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6a48c1a327e..925c1c2cefe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## Unreleased +### Fixes + +- Handle native NDK init failure by checking return code and throwing an IllegalStateException to disable NDK integration early. This prevents the SDK from assuming a successful NDK initialization when the underlying native init failed. + ### Dependencies - Bump Native SDK from v0.11.2 to v0.11.3 ([#4810](https://github.com/getsentry/sentry-java/pull/4810)) diff --git a/sentry-android-core/src/test/java/io/sentry/android/core/NdkIntegrationTest.kt b/sentry-android-core/src/test/java/io/sentry/android/core/NdkIntegrationTest.kt index ae73a394050..4e54d5527bb 100644 --- a/sentry-android-core/src/test/java/io/sentry/android/core/NdkIntegrationTest.kt +++ b/sentry-android-core/src/test/java/io/sentry/android/core/NdkIntegrationTest.kt @@ -127,6 +127,7 @@ class NdkIntegrationTest { assertFalse(options.isEnableScopeSync) } + @Test fun `NdkIntegration won't init if cache dir is null`() { val integration = fixture.getSut() @@ -179,4 +180,5 @@ class NdkIntegrationTest { @JvmStatic fun init(options: SentryAndroidOptions) {} } } + } diff --git a/sentry-android-ndk/src/main/java/io/sentry/android/ndk/SentryNdk.java b/sentry-android-ndk/src/main/java/io/sentry/android/ndk/SentryNdk.java index 9d6d64a1236..c45309c690c 100644 --- a/sentry-android-ndk/src/main/java/io/sentry/android/ndk/SentryNdk.java +++ b/sentry-android-ndk/src/main/java/io/sentry/android/ndk/SentryNdk.java @@ -74,7 +74,11 @@ public static void init(@NotNull final SentryAndroidOptions options) { } //noinspection UnstableApiUsage - io.sentry.ndk.SentryNdk.init(ndkOptions); + final int initResult = io.sentry.ndk.SentryNdk.init(ndkOptions); + if (initResult != 0) { + throw new IllegalStateException( + "Failed to initialize Sentry NDK. Native init returned code " + initResult); + } // only add scope sync observer if the scope sync is enabled. if (options.isEnableScopeSync()) { From 3a9987e53c326b8bf20017548b9587aae38448ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hanno=20J=2E=20G=C3=B6decke?= Date: Tue, 28 Oct 2025 14:04:03 +0100 Subject: [PATCH 2/2] remove empty space --- .../src/test/java/io/sentry/android/core/NdkIntegrationTest.kt | 2 -- 1 file changed, 2 deletions(-) diff --git a/sentry-android-core/src/test/java/io/sentry/android/core/NdkIntegrationTest.kt b/sentry-android-core/src/test/java/io/sentry/android/core/NdkIntegrationTest.kt index 4e54d5527bb..ae73a394050 100644 --- a/sentry-android-core/src/test/java/io/sentry/android/core/NdkIntegrationTest.kt +++ b/sentry-android-core/src/test/java/io/sentry/android/core/NdkIntegrationTest.kt @@ -127,7 +127,6 @@ class NdkIntegrationTest { assertFalse(options.isEnableScopeSync) } - @Test fun `NdkIntegration won't init if cache dir is null`() { val integration = fixture.getSut() @@ -180,5 +179,4 @@ class NdkIntegrationTest { @JvmStatic fun init(options: SentryAndroidOptions) {} } } - }