-
Type: Bug
-
Resolution: Unresolved
-
Priority: Minor - P4
-
None
-
Affects Version/s: None
-
Component/s: None
How frequently does the bug occur?
Sometimes
Description
Hello,
We are facing multiple crashes since the update of the Realm Version from 10.8.1 -> 10.9.0.
So far, more than 2000 users have been affected by these crashes (~5%). But we don't have specific complaints about it, so it can be silent crashes. There is ~1.4 crash/user on average so maybe it's just happening once/per device or in really specific conditions.
All the crashes are happening in the equals() method of a RealmObject used in a recyclerview with a Diffutils. More precisely in the size() }}method of a {{RealmList contained in the RealmObject.
These crashes don't seem to be related to specific devices, we were not able to reproduce with the same devices.
Stacktrace & log output
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR) librealm-jni.so (offset 0xab0000)
Obfuscated trace :
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** pid: 0, tid: 0 >>> eu.qonto.qonto <<< backtrace: #00 pc 0000000000375398 /data/app/~~IM2LYE6LLUpHM_1qPg16kA==/eu.qonto.qonto-_rP1yxixX2tLoHWEx4QI4A==/split_config.arm64_v8a.apk!lib/arm64-v8a/librealm-jni.so (offset 0xab0000) #00 pc 0000000000588774 /data/app/~~IM2LYE6LLUpHM_1qPg16kA==/eu.qonto.qonto-_rP1yxixX2tLoHWEx4QI4A==/split_config.arm64_v8a.apk!lib/arm64-v8a/librealm-jni.so (offset 0xab0000) #00 pc 00000000005885d4 /data/app/~~IM2LYE6LLUpHM_1qPg16kA==/eu.qonto.qonto-_rP1yxixX2tLoHWEx4QI4A==/split_config.arm64_v8a.apk!lib/arm64-v8a/librealm-jni.so (offset 0xab0000) #00 pc 0000000000586d44 /data/app/~~IM2LYE6LLUpHM_1qPg16kA==/eu.qonto.qonto-_rP1yxixX2tLoHWEx4QI4A==/split_config.arm64_v8a.apk!lib/arm64-v8a/librealm-jni.so (offset 0xab0000) #00 pc 000000000036ae98 /data/app/~~IM2LYE6LLUpHM_1qPg16kA==/eu.qonto.qonto-_rP1yxixX2tLoHWEx4QI4A==/split_config.arm64_v8a.apk!lib/arm64-v8a/librealm-jni.so (offset 0xab0000) (Java_io_realm_internal_OsList_nativeSize+20) #00 pc 0000000000206bf8 /data/app/~~IM2LYE6LLUpHM_1qPg16kA==/eu.qonto.qonto-_rP1yxixX2tLoHWEx4QI4A==/oat/arm64/base.odex (art_jni_trampoline+152) #00 pc 0000000000387a30 /data/app/~~IM2LYE6LLUpHM_1qPg16kA==/eu.qonto.qonto-_rP1yxixX2tLoHWEx4QI4A==/oat/arm64/base.odex (io.realm.internal.OsList.V+48) #00 pc 000000000038c080 /data/app/~~IM2LYE6LLUpHM_1qPg16kA==/eu.qonto.qonto-_rP1yxixX2tLoHWEx4QI4A==/oat/arm64/base.odex (io.realm.u0.size+192) #00 pc 000000000037728c /data/app/~~IM2LYE6LLUpHM_1qPg16kA==/eu.qonto.qonto-_rP1yxixX2tLoHWEx4QI4A==/oat/arm64/base.odex (io.realm.u0$b.hasNext+156) #00 pc 00000000002bfad8 /apex/com.android.art/javalib/arm64/boot.oat (java.util.AbstractList.equals+456) #00 pc 00000000008171c0 /data/app/~~IM2LYE6LLUpHM_1qPg16kA==/eu.qonto.qonto-_rP1yxixX2tLoHWEx4QI4A==/oat/arm64/base.odex (kotlin.jvm.internal.n.e+64) #00 pc 0000000000718b54 /data/app/~~IM2LYE6LLUpHM_1qPg16kA==/eu.qonto.qonto-_rP1yxixX2tLoHWEx4QI4A==/oat/arm64/base.odex (com.qonto.qonto.data.model.Transaction.equals+2196) #00 pc 000000000092e160 /data/app/~~IM2LYE6LLUpHM_1qPg16kA==/eu.qonto.qonto-_rP1yxixX2tLoHWEx4QI4A==/oat/arm64/base.odex (rv.f.equals+240) #00 pc 00000000008171c0 /data/app/~~IM2LYE6LLUpHM_1qPg16kA==/eu.qonto.qonto-_rP1yxixX2tLoHWEx4QI4A==/oat/arm64/base.odex (kotlin.jvm.internal.n.e+64) #00 pc 0000000000282abc /data/app/~~IM2LYE6LLUpHM_1qPg16kA==/eu.qonto.qonto-_rP1yxixX2tLoHWEx4QI4A==/oat/arm64/base.odex (dd.c.a+252) #00 pc 00000000006f3c10 /data/app/~~IM2LYE6LLUpHM_1qPg16kA==/eu.qonto.qonto-_rP1yxixX2tLoHWEx4QI4A==/oat/arm64/base.odex (ip.j.d+288) #00 pc 00000000006f3998 /data/app/~~IM2LYE6LLUpHM_1qPg16kA==/eu.qonto.qonto-_rP1yxixX2tLoHWEx4QI4A==/oat/arm64/base.odex (ip.j.a+104) #00 pc 0000000000526d7c /data/app/~~IM2LYE6LLUpHM_1qPg16kA==/eu.qonto.qonto-_rP1yxixX2tLoHWEx4QI4A==/oat/arm64/base.odex (androidx.recyclerview.widget.d$a$a.a+236) #00 pc 0000000000423948 /data/app/~~IM2LYE6LLUpHM_1qPg16kA==/eu.qonto.qonto-_rP1yxixX2tLoHWEx4QI4A==/oat/arm64/base.odex (androidx.recyclerview.widget.h$e.e+280) #00 pc 000000000042338c /data/app/~~IM2LYE6LLUpHM_1qPg16kA==/eu.qonto.qonto-_rP1yxixX2tLoHWEx4QI4A==/oat/arm64/base.odex (androidx.recyclerview.widget.h$e.<init>+268) #00 pc 0000000000424dc0 /data/app/~~IM2LYE6LLUpHM_1qPg16kA==/eu.qonto.qonto-_rP1yxixX2tLoHWEx4QI4A==/oat/arm64/base.odex (androidx.recyclerview.widget.h.c+1088) #00 pc 000000000041ff0c /data/app/~~IM2LYE6LLUpHM_1qPg16kA==/eu.qonto.qonto-_rP1yxixX2tLoHWEx4QI4A==/oat/arm64/base.odex (androidx.recyclerview.widget.d$a.run+140) #00 pc 00000000002d0638 /apex/com.android.art/javalib/arm64/boot.oat (java.util.concurrent.ThreadPoolExecutor.runWorker+984) #00 pc 00000000002cd650 /apex/com.android.art/javalib/arm64/boot.oat (java.util.concurrent.ThreadPoolExecutor$Worker.run+64) #00 pc 0000000000176798 /apex/com.android.art/javalib/arm64/boot.oat (java.lang.Thread.run+72) #00 pc 0000000000133564 /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548) #00 pc 00000000001a8a78 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200) #00 pc 000000000055581c /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithJValues<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+460) #00 pc 00000000005a4b80 /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallback(void*)+1308) #00 pc 00000000000da278 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+64) #00 pc 000000000007a448 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
Deobfuscated trace
/data/app/eu.qonto.qonto-yx5M_Ko3r36ME10l4xG2CQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/librealm-jni.so (offset 0xab0000) /data/app/eu.qonto.qonto-yx5M_Ko3r36ME10l4xG2CQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/librealm-jni.so (offset 0xab0000) /data/app/eu.qonto.qonto-yx5M_Ko3r36ME10l4xG2CQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/librealm-jni.so (offset 0xab0000) /data/app/eu.qonto.qonto-yx5M_Ko3r36ME10l4xG2CQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/librealm-jni.so (offset 0xab0000) /data/app/eu.qonto.qonto-yx5M_Ko3r36ME10l4xG2CQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/librealm-jni.so (offset 0xab0000) (Java_io_realm_internal_OsList_nativeSize+20) /data/app/eu.qonto.qonto-yx5M_Ko3r36ME10l4xG2CQ==/oat/arm64/base.odex (art_jni_trampoline+152) /data/app/eu.qonto.qonto-yx5M_Ko3r36ME10l4xG2CQ==/oat/arm64/base.odex (io.realm.internal.OsList.size+60) /data/app/eu.qonto.qonto-yx5M_Ko3r36ME10l4xG2CQ==/oat/arm64/base.odex (io.realm.RealmList$RealmItr.hasNext+304) /system/framework/arm64/boot.oat (java.util.AbstractList.equals+424) /data/app/eu.qonto.qonto-yx5M_Ko3r36ME10l4xG2CQ==/oat/arm64/base.odex (kotlin.jvm.internal.Intrinsics.areEqual+64) /data/app/eu.qonto.qonto-yx5M_Ko3r36ME10l4xG2CQ==/oat/arm64/base.odex (com.qonto.qonto.data.model.Transaction.equals+2196) /data/app/eu.qonto.qonto-yx5M_Ko3r36ME10l4xG2CQ==/oat/arm64/base.odex (com.qonto.qonto.ui.transaction.list.TransactionListItem.equals+244) /data/app/eu.qonto.qonto-yx5M_Ko3r36ME10l4xG2CQ==/oat/arm64/base.odex (kotlin.jvm.internal.Intrinsics.areEqual+64) /data/app/eu.qonto.qonto-yx5M_Ko3r36ME10l4xG2CQ==/oat/arm64/base.odex (com.qonto.core.utils.diffutil.HasIdItemCallback.areContentsTheSame+252) /data/app/eu.qonto.qonto-yx5M_Ko3r36ME10l4xG2CQ==/oat/arm64/base.odex (com.qonto.qonto.ui.core.baselist.ListItemDiffUtils.areContentsTheSame+288) /data/app/eu.qonto.qonto-yx5M_Ko3r36ME10l4xG2CQ==/oat/arm64/base.odex (com.qonto.qonto.ui.core.baselist.ListItemDiffUtils.areContentsTheSame+104) /data/app/eu.qonto.qonto-yx5M_Ko3r36ME10l4xG2CQ==/oat/arm64/base.odex (androidx.recyclerview.widget.AsyncListDiffer$1$1.areContentsTheSame+236) /data/app/eu.qonto.qonto-yx5M_Ko3r36ME10l4xG2CQ==/oat/arm64/base.odex (androidx.recyclerview.widget.DiffUtil$DiffResult.findMatchingItems+280) /data/app/eu.qonto.qonto-yx5M_Ko3r36ME10l4xG2CQ==/oat/arm64/base.odex (androidx.recyclerview.widget.DiffUtil$DiffResult.<init>+268) /data/app/eu.qonto.qonto-yx5M_Ko3r36ME10l4xG2CQ==/oat/arm64/base.odex (androidx.recyclerview.widget.DiffUtil.calculateDiff+1088) /data/app/eu.qonto.qonto-yx5M_Ko3r36ME10l4xG2CQ==/oat/arm64/base.odex (androidx.recyclerview.widget.AsyncListDiffer$1.run+144) /system/framework/arm64/boot.oat (java.util.concurrent.ThreadPoolExecutor.runWorker+984) /system/framework/arm64/boot.oat (java.util.concurrent.ThreadPoolExecutor$Worker.run+64) /system/framework/arm64/boot.oat (java.lang.Thread.run+72) /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_stub+548) /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+252) /apex/com.android.runtime/lib64/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+104) /apex/com.android.runtime/lib64/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue const*)+416) /apex/com.android.runtime/lib64/libart.so (art::Thread::CreateCallback(void*)+1176) /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36) /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
Can you reproduce the bug?
Not yet
Reproduction Steps
We are unable to reproduce the crash so far, but it's impacting more than 5% of our userbase.
Version
10.9.0
What SDK flavour are you using?
Local Database
Are you using encryption?
Yes, using encryption
Platform OS and version(s)
Android - mostly v10 & 11
Build environment
Android Studio version: ...
Android Build Tools version: ...
Gradle version: ...