Skip to content

libsentry-tm-perf-logger.so is not 16 KB page aligned after upgrading from 8.16.0 to 8.17.0 #6394

Description

@tomekzaw

What React Native libraries do you use?

Expo (mobile only), Expo Router, Hermes, RN New Architecture, React Navigation

Are you using sentry.io or on-premise?

sentry.io (SaS)

Are you using any other error monitoring solution alongside Sentry?

No

@sentry/react-native SDK Version

8.16.0 (old), 8.17.0 (new). The issue started right after the upgrade.

How does your development environment look like?

System:
  OS: macOS 26.5.2
  CPU: (15) arm64 Apple M5 Pro
Binaries:
  Node: 24.16.0
  npm: 11.16.0
SDKs:
  Android SDK: build-tools 37.0.0
npmPackages:
  expo: 57.0.1
  react: 19.2.3
  react-native: 0.86.0
Android:
  newArchEnabled: true
  hermesEnabled: true

Emulator: Pixel 10 Pro AVD with the 16 KB page size system image (sdk_gphone16k_arm64, Android 17, API 37, arm64-v8a).

Sentry.init()

Sentry.init({
  dsn: "https://...@o...ingest.de.sentry.io/...",
  enabled: !__DEV__,
  environment: "production",
  enableTombstone: true,
  integrations: [navigationIntegration],
});

Steps to Reproduce

  1. Upgrade @sentry/react-native from 8.16.0 to 8.17.0 in a New Architecture app
  2. Build and install the app on an Android emulator with a 16 KB page size image
  3. Launch the app

Expected Result

No compatibility warning, all native libraries are 16 KB page aligned (as they were with 8.16.0).

Actual Result

On every app start, Android shows the "Android App Compatibility" dialog saying the app is not 16 KB compatible and will run in page size compatible mode. It unhelpfully lists every library with "Unknown error", but I pulled the APK and checked the ELF headers of all 32 libs myself. Exactly one is misaligned, and it is the new one introduced in 8.17.0 by the Turbo Module performance tracking feature (#6307):

lib/arm64-v8a/libsentry-tm-perf-logger.so   LOAD align: 4096 (all other libs: 16384)

Logcat at install time:

NativeLibraryHelper: Setting page size compat mode PAGE_SIZE_APP_COMPAT_FLAG_ELF_NOT_ALIGNED
AppWarnings: Showing PageSizeMismatchDialog for package pl.tomekzaw.odjazdowykrk

The library is built from source in the consuming app by android/src/main/jni/CMakeLists.txt, which does not pass -Wl,-z,max-page-size=16384. RN 0.86 / Expo SDK 57 builds with NDK 27, where the linker still defaults to 4 KB alignment (16 KB only became the default in NDK r28), so the resulting .so breaks 16 KB compliance for the whole app. This will presumably also fail Google Play's 16 KB requirement, not just show the emulator dialog.

The usual fix would be adding this to the CMakeLists:

target_link_options(sentry-tm-perf-logger PRIVATE "-Wl,-z,max-page-size=16384")

Screenshot from the emulator:

Android App Compatibility dialog listing libraries that are not 16 KB aligned

Metadata

Metadata

Assignees

Fields

No fields configured for issues without a type.

Projects

Status
No status

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions