Closed supervacuus closed 3 months ago
Fails | |
---|---|
:no_entry_sign: | Please consider adding a changelog entry for the next release. |
Messages | |
---|---|
:book: | Do not forget to update Sentry-docs with your feature once the pull request gets approved. |
Please add an entry to CHANGELOG.md
to the "Unreleased" section. Make sure the entry includes this PR's number.
Example:
## Unreleased
- support 16kb page size on Android 15 ([#1028](https://github.com/getsentry/sentry-native/pull/1028))
If none of the above apply, you can opt out of this check by adding #skip-changelog
to the PR description.
Generated by :no_entry_sign: dangerJS against 6ba71e0f238e4be01b5172000c09f8b1207b2f11
@supervacuus thanks for taking a look into this!
- This should be tested with the NDK sample app by at least another Android developer in the team
- How (and when) to integrate this in
sentry-android
since it will also have to be added there for version < 8.
1) I manually tested the changes on an "Android 15 16KB page size" emulator, looking good, no more obvious crashes
2) I manually tested the changes on non 16KB devices, just to ensure the build flags don't cause a regression, looking good as well!
3) The required changes for sentry-java
7.x are here: https://github.com/getsentry/sentry-java/pull/3620 I did some manual testing here as well, looks promising.
I have also tested with a separate app, only initializing sentry-native on a 16kb image but using the local maven AAR instead of the sample APK.
I think it should be enough to specify the NDK version in the sample build script because our packaged .so does not have 16kb-built runtime dependencies.
All modified and coverable lines are covered by tests :white_check_mark:
Project coverage is 83.77%. Comparing base (
131a1ee
) to head (6ba71e0
). Report is 22 commits behind head on master.
Manual check if there are any remaining hardcoded 4096 page-size assumptions
Context: https://developer.android.com/guide/practices/page-sizes#check-code
getpagesize()
throughout:
mpack
hardcodes the page-size to 4096
, but we don't use it in the Android build and the way it is used, doesn't really lead to misalignment re page-sizes (but it could mean inefficient node layout).mmap()
in the page allocator, but don't use any page-aligned parameters and the page size is retrieved from getpagesize()
for the internal allocation increments (not that it matters).PAGE_SIZE
or any other hard-coded 4096
page-size in the remaining code baseSo, from my side, we're good if everything works on the sentry-android
side.
This fixes #989.
I tried to reach the most minimal version I could successfully deploy to a 16kb page-size image on the emulator.
Important here:
AGP <= 8.2
: https://developer.android.com/guide/practices/page-sizes#agp_version_82_or_lowerOpen topics:
sentry-android
since it will also have to be added there for version < 8.