Fixed
Status Update
Comments
su...@google.com <su...@google.com> #2
Thanks for trying out Room KMP! This looks like an issue with Android 9+ and armv7 and the way we compile sqlite3.c, specifically linking to the atomic library in C. We'll try to get this fix as soon as possible.
ru...@gmail.com <ru...@gmail.com> #3
an...@google.com <an...@google.com> #4
Facing the same issue here, surprisingly using the AndroidSQLiteDriver instead of the bundled one seems to work fine. So for now, others facing the crash can fix it by using the AndroidSQLiteDriver instead of the bundled one
ru...@gmail.com <ru...@gmail.com> #5
Project: platform/frameworks/support
Branch: androidx-main
commit cf121571aac008a756b64cda13f76ae4db3e85a6
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Wed May 29 11:14:42 2024
Link to Android's atomic lib in bundled SQLite
Fix Bundled SQLite loading for devices with older ARM architecture by linking to Android's atomic library instead of relying on Clang's extension (c_atomic) or GCC's built-ins as used in sqlite3.c.
Also add support for passing linker args to androidx's native compilation infra.
See also discussion inhttps://sqlite.org/forum/forumpost/792d76a592608d8f
Bug: 341639198
Test: Locally tested via BundledSQLiteDriverTest in a Nexus 5 on API 23
Change-Id: Ia818b7c4f1a990a1b5e35f4c7a3c89694aee0503
M buildSrc/private/src/main/kotlin/androidx/build/clang/ClangSharedLibraryTask.kt
M buildSrc/private/src/main/kotlin/androidx/build/clang/KonanBuildService.kt
M buildSrc/private/src/main/kotlin/androidx/build/clang/MultiTargetNativeCompilation.kt
M buildSrc/private/src/main/kotlin/androidx/build/clang/NativeTargetCompilation.kt
M sqlite/sqlite-bundled/build.gradle
https://android-review.googlesource.com/3108157
Branch: androidx-main
commit cf121571aac008a756b64cda13f76ae4db3e85a6
Author: Daniel Santiago Rivera <danysantiago@google.com>
Date: Wed May 29 11:14:42 2024
Link to Android's atomic lib in bundled SQLite
Fix Bundled SQLite loading for devices with older ARM architecture by linking to Android's atomic library instead of relying on Clang's extension (c_atomic) or GCC's built-ins as used in sqlite3.c.
Also add support for passing linker args to androidx's native compilation infra.
See also discussion in
Bug: 341639198
Test: Locally tested via BundledSQLiteDriverTest in a Nexus 5 on API 23
Change-Id: Ia818b7c4f1a990a1b5e35f4c7a3c89694aee0503
M buildSrc/private/src/main/kotlin/androidx/build/clang/ClangSharedLibraryTask.kt
M buildSrc/private/src/main/kotlin/androidx/build/clang/KonanBuildService.kt
M buildSrc/private/src/main/kotlin/androidx/build/clang/MultiTargetNativeCompilation.kt
M buildSrc/private/src/main/kotlin/androidx/build/clang/NativeTargetCompilation.kt
M sqlite/sqlite-bundled/build.gradle
ra...@google.com <ra...@google.com> #6
Hello, even if I updated to version androidx.sqlite:sqlite-bundled:2.5.0-alpha04 I just received a crash on a nexus 5X with android 8.1.0 and another one on Redmi Note 11 Pro with android 13.
I'm using androidx.room:room-runtime-android:2.7.0-alpha01.
This is the log:
Fatal Exception: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.myproject-ssibkzVuLAo7tvV0puYoEg==/base.apk"],nativeLibraryDirectories=[/data/app/com.myproject-ssibkzVuLAo7tvV0puYoEg==/lib/x86, /system/lib, /vendor/lib]]] couldn't find "libsqliteJni.so"
at java.lang.Runtime.loadLibrary0(Runtime.java:1011)
at java.lang.System.loadLibrary(System.java:1657)
at androidx.sqlite.driver.bundled.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.android.kt:1)
at androidx.sqlite.driver.bundled.BundledSQLiteDriver.<clinit>(BundledSQLiteDriver.jvmAndroid.kt:1)
Thank you!
I'm using androidx.room:room-runtime-android:2.7.0-alpha01.
This is the log:
Fatal Exception: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.myproject-ssibkzVuLAo7tvV0puYoEg==/base.apk"],nativeLibraryDirectories=[/data/app/com.myproject-ssibkzVuLAo7tvV0puYoEg==/lib/x86, /system/lib, /vendor/lib]]] couldn't find "libsqliteJni.so"
at java.lang.Runtime.loadLibrary0(Runtime.java:1011)
at java.lang.System.loadLibrary(System.java:1657)
at androidx.sqlite.driver.bundled.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.android.kt:1)
at androidx.sqlite.driver.bundled.BundledSQLiteDriver.<clinit>(BundledSQLiteDriver.jvmAndroid.kt:1)
Thank you!
ru...@gmail.com <ru...@gmail.com> #7
Can you try using androidx.room:room-runtime-android:2.7.0-alpha04
and confirm if the issue is still present?
Description
Version used: 2.1.0
Devices/Android versions reproduced on: 6.0
We're getting this crash on multiple devices:
Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.util.ArrayMap.containsKey(java.lang.Object)' on a null object reference
at android.os.BaseBundle.containsKey + 277(BaseBundle.java:277)
at androidx.work.impl.background.systemjob.SystemJobScheduler.getPendingJobIds + 331(SystemJobScheduler.java:331)
at androidx.work.impl.background.systemjob.SystemJobScheduler.schedule + 138(SystemJobScheduler.java:138)
at androidx.work.impl.Schedulers.schedule + 93(Schedulers.java:93)
at androidx.work.impl.WorkManagerImpl.rescheduleEligibleWork + 587(WorkManagerImpl.java:587)
at androidx.work.impl.utils.ForceStopRunnable.run + 82(ForceStopRunnable.java:82)
at androidx.work.impl.utils.SerialExecutor$Task.run + 75(SerialExecutor.java:75)
at java.util.concurrent.ThreadPoolExecutor.runWorker + 1113(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run + 588(ThreadPoolExecutor.java:588)
at java.lang.Thread.run + 833(Thread.java:833)
For some reason, the mMap in BaseBundle is null and getPendingJobIds doesn't catch that:
for (JobInfo jobInfo : jobs) {
PersistableBundle extras = jobInfo.getExtras();
// The map inside extras can be null, so extras.containsKey can cause a NPE
if (extras != null && extras.containsKey(EXTRA_WORK_SPEC_ID)) {
if (workSpecId.equals(extras.getString(EXTRA_WORK_SPEC_ID))) {
jobIds.add(jobInfo.getId());
}
}
}