Uploaded image for project: 'Realm Java SDK'
  1. Realm Java SDK
  2. RJAVA-1069

RealmList size() crashes occurring for many users since version 10.9.0

      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 :

      Unable to find source-code formatter for language: shell. Available languages are: actionscript, ada, applescript, bash, c, c#, c++, cpp, css, erlang, go, groovy, haskell, html, java, javascript, js, json, lua, none, nyan, objc, perl, php, python, r, rainbow, ruby, scala, sh, sql, swift, visualbasic, xml, yaml
      *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
      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

      Unable to find source-code formatter for language: shell. Available languages are: actionscript, ada, applescript, bash, c, c#, c++, cpp, css, erlang, go, groovy, haskell, html, java, javascript, js, json, lua, none, nyan, objc, perl, php, python, r, rainbow, ruby, scala, sh, sql, swift, visualbasic, xml, yaml
      /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: ...

            Assignee:
            Unassigned Unassigned
            Reporter:
            unitosyncbot Unito Sync Bot
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: