objectbox / objectbox-java

Android Database - first and fast, lightweight on-device vector database
https://objectbox.io
Apache License 2.0
4.38k stars 302 forks source link

Native Crash when querying first - Only showing at PlayStore #851

Closed shidobecker closed 4 years ago

shidobecker commented 4 years ago

Issue Basics

-Never on debug builds or release builds that I generated for my team to test it, and never happened, even on same devices like Samgung Galaxy S9 and a Motorola Moto G7 which some member also have.

It seems that it's only happening on Android 9 and 10 (which I also tested here and wasn't able to reproduce)

Reproducing the bug

Description

I'm getting the following native crash log (that I can only get by PlayStore, not Crashlytics) as soon as my app starts, since I request data from local database: The only line that showed me some info was:

06 pc 0000000000043688 /data/app/br.com.ampli-A-oKgSqV0pfD7IL5xQWvwQ==/base.apk!libobjectbox-jni.so (offset 0x37e000) (Java_io_objectbox_query_Query_nativeFindFirst+68)

It started out of nowhere, I was working just fine on my app version "1.0.2" when I upgraded to "1.1.0" it stopped working. I didn't change any property on any Entity. First I thought was an extension function queryFirst that I use:

inline fun <reified T : Any> BoxStore.queryFirst(model: T): T? {
    return this.boxFor(model::class.java).query().build().findFirst()
}

So I've change all call on it to the default : BoxStore.getDefault().boxFor(Course::class.java).query().build().findFirst()

Maybe related to (https://github.com/objectbox/objectbox-java/issues/494) or (https://github.com/objectbox/objectbox-java/issues/490)

Code

I'm not entirely sure what code exactly is causing this, but I think is when I get the first Course object:

  override suspend fun fetchCourse(): Course? {
        return withContext(Dispatchers.IO) {
            BoxStore.getDefault().boxFor(Course::class.java).query().build().findFirst()
        }
    }

Logs & stackstraces

pid: 0, tid: 0 >>> br.com.ampli <<<

backtrace:
  #00  pc 0000000000083134  /apex/com.android.runtime/lib64/bionic/libc.so (abort+160)
  #01  pc 00000000004b3c08  /apex/com.android.runtime/lib64/libart.so (art::Runtime::Abort(char const*)+2376)
  #02  pc 000000000000c5b4  /system/lib64/libbase.so (android::base::LogMessage::~LogMessage()+608)
  #03  pc 0000000000374a94  /apex/com.android.runtime/lib64/libart.so (art::JavaVMExt::JniAbort(char const*, char const*)+1592)
  #04  pc 00000000003a74c8  /apex/com.android.runtime/lib64/libart.so (art::JNI::SetObjectField(_JNIEnv*, _jobject*, _jfieldID*, _jobject*)+924)
  #05  pc 00000000000262a4  /data/app/br.com.ampli-A-oKgSqV0pfD7IL5xQWvwQ==/base.apk!libobjectbox-jni.so (offset 0x37e000)
  #06  pc 0000000000043688  /data/app/br.com.ampli-A-oKgSqV0pfD7IL5xQWvwQ==/base.apk!libobjectbox-jni.so (offset 0x37e000) (Java_io_objectbox_query_Query_nativeFindFirst+68)
  #07  pc 000000000003fb7c  /data/app/br.com.ampli-A-oKgSqV0pfD7IL5xQWvwQ==/oat/arm64/base.odex (art_jni_trampoline+140)
  #08  pc 0000000000137334  /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_stub+548)
  #09  pc 000000000014606c  /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+244)
  #10  pc 00000000002e0cd0  /apex/com.android.runtime/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+384)
  #11  pc 00000000002dbfb0  /apex/com.android.runtime/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+912)
  #12  pc 00000000005a030c  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+596)
  #13  pc 0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #14  pc 000000000047941c  /data/app/br.com.ampli-A-oKgSqV0pfD7IL5xQWvwQ==/oat/arm64/base.vdex (io.objectbox.query.Query$a.call+28)
  #15  pc 000000000059bbe4  /apex/com.android.runtime/lib64/libart.so (MterpInvokeInterface+1740)
  #16  pc 0000000000131a14  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_interface+20)
  #17  pc 0000000000476786  /data/app/br.com.ampli-A-oKgSqV0pfD7IL5xQWvwQ==/oat/arm64/base.vdex (io.objectbox.BoxStore.a+42)
  #18  pc 00000000005a0610  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1368)
  #19  pc 0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #20  pc 0000000000476886  /data/app/br.com.ampli-A-oKgSqV0pfD7IL5xQWvwQ==/oat/arm64/base.vdex (io.objectbox.BoxStore.a+6)
  #21  pc 00000000005a0610  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1368)
  #22  pc 0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #23  pc 0000000000479a40  /data/app/br.com.ampli-A-oKgSqV0pfD7IL5xQWvwQ==/oat/arm64/base.vdex (io.objectbox.query.Query.d+40)
  #24  pc 00000000005a0610  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1368)
  #25  pc 0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #26  pc 00000000002442c6  /data/app/br.com.ampli-A-oKgSqV0pfD7IL5xQWvwQ==/oat/arm64/base.vdex (e.a.a.j1.d.a$a.d+54)
  #27  pc 00000000005a0610  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1368)
  #28  pc 0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #29  pc 000000000047fe9a  /data/app/br.com.ampli-A-oKgSqV0pfD7IL5xQWvwQ==/oat/arm64/base.vdex (b1.p.i.a.a.c+18)
  #30  pc 000000000059bbe4  /apex/com.android.runtime/lib64/libart.so (MterpInvokeInterface+1740)
  #31  pc 0000000000131a14  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_interface+20)
  #32  pc 000000000048797e  /data/app/br.com.ampli-A-oKgSqV0pfD7IL5xQWvwQ==/oat/arm64/base.vdex (a0.a.p0.run+214)
  #33  pc 000000000059bbe4  /apex/com.android.runtime/lib64/libart.so (MterpInvokeInterface+1740)
  #34  pc 0000000000131a14  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_interface+20)
  #35  pc 000000000048fcd4  /data/app/br.com.ampli-A-oKgSqV0pfD7IL5xQWvwQ==/oat/arm64/base.vdex (a0.a.c2.b.a)
  #36  pc 00000000005a0610  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1368)
  #37  pc 0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #38  pc 000000000048ee5e  /data/app/br.com.ampli-A-oKgSqV0pfD7IL5xQWvwQ==/oat/arm64/base.vdex (a0.a.c2.b$a.run+534)
  #39  pc 00000000002b191c  /apex/com.android.runtime/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.18252570399552585066)+240)
  #40  pc 000000000058b6e8  /apex/com.android.runtime/lib64/libart.so (artQuickToInterpreterBridge+1012)
  #41  pc 0000000000140468  /apex/com.android.runtime/lib64/libart.so (art_quick_to_interpreter_bridge+88)
  #42  pc 0000000000137334  /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_stub+548)
  #43  pc 000000000014606c  /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+244)
  #44  pc 00000000004ab72c  /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)
  #45  pc 00000000004ac7c0  /apex/com.android.runtime/lib64/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue const*)+416)
  #46  pc 00000000004ecb00  /apex/com.android.runtime/lib64/libart.so (art::Thread::CreateCallback(void*)+1176)
  #47  pc 00000000000e28c0  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36)
  #48  pc 000000000008503c  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)

Entities

But I can't be sure what entity is causing the issue. But I think is my following Course entity:

@Entity
data class Course(

    @Id var boxId: Long = 0L,

    @Index var id: String = UUID.randomUUID().toString(),

    var version: Int = 0,

    var name: String = "",

    var studentId: String = "",

    var percentageCompletion: Int = 0,

    var startDateInEpochDay: Long = 0L,

    var endDateInEpochDay: Long = 0L
) {
    var disciplines: ToMany<Discipline> = ToMany(this, Course_.disciplines)
}

Btw in case someone's wondering why disciplines is not a lateinit var, is because couldn't unit test it if it was, so I changed and initialized here, for more info: ToOneObjectIsNull

Misc

*Is there anything special about your app? The only "big" change that I've made from working version to not working version was adding and upgrading another lib, specifically Zendesk's I went from

3.0.1 to 4.0.0

And also added 2 more libs:

com.zendesk:chat:2.0.0 com.zendesk:messaging:4.2.1

May transactions or multi-threading play a role? I'm using coroutines with Dispatchers.IO as a context whenever I call the database

Did you find any workarounds to prevent the issue?* I'll try to change every findFirst() call to find and get the first position to see if I'm able to make it work., but I'm running out of ideas.

shidobecker commented 4 years ago

I've changed all findFirst() calls to

boxFor(model::class.java).all[0]

And the crash change to:

  #23  pc 000000000001c903  /data/app/br.com.ampli-VLlxlv9pljML2jxVG8UJkw==/base.apk (offset 0x4ea000) (Java_io_objectbox_Cursor_nativeFirstEntity+38)
  #24  pc 000000000003f38f  /data/app/br.com.ampli-VLlxlv9pljML2jxVG8UJkw==/oat/arm/base.odex (offset 0x3f000) (io.objectbox.BoxStore.nativeDiagnose [DEDUPED]+102)

I really need help, I have no idea what to do now

greenrobot commented 4 years ago

Thanks for reporting. OK, first, let me try to summarize:

Seems like we need to gather more info.

Questions:

shidobecker commented 4 years ago

@greenrobot
Your summary is correct. It only happens with some users, but others seems fine, they keep using the app as usual, and users with same devices as the ones that other users are crashing. I wonder if there's an device configuration that might be causing this.

Regarding your questions

pid: 0, tid: 0 >>> br.com.ampli <<<

backtrace:
  #00  pc 0000000000021c64  /system/lib64/libc.so (abort+116)
  #01  pc 000000000046604c  /system/lib64/libart.so (art::Runtime::Abort(char const*)+1196)
  #02  pc 0000000000008cd4  /system/lib64/libbase.so (android::base::LogMessage::~LogMessage()+724)
  #03  pc 00000000002e612c  /system/lib64/libart.so (art::JavaVMExt::JniAbort(char const*, char const*)+1640)
  #04  pc 0000000000352958  /system/lib64/libart.so (art::JNI::SetObjectField(_JNIEnv*, _jobject*, _jfieldID*, _jobject*)+944)
  #05  pc 000000000002d888  /data/app/br.com.ampli-Iu6jHEjbEGkSXT0F-px5BA==/base.apk (offset 0x37f000)
  #06  pc 0000000000029e50  /data/app/br.com.ampli-Iu6jHEjbEGkSXT0F-px5BA==/base.apk (offset 0x37f000) (Java_io_objectbox_Cursor_nativeFirstEntity+68)
  #07  pc 000000000003e568  /data/app/br.com.ampli-Iu6jHEjbEGkSXT0F-px5BA==/oat/arm64/base.odex (offset 0x3e000) (io.objectbox.BoxStore.nativeDiagnose [DEDUPED]+152)
  #08  pc 0000000000556c4c  /system/lib64/libart.so (art_quick_invoke_static_stub+604)
  #09  pc 00000000000cf8e8  /system/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+232)
  #10  pc 000000000028058c  /system/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+344)
  #11  pc 000000000027a594  /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+968)
  #12  pc 0000000000527b4c  /system/lib64/libart.so (MterpInvokeStatic+204)
  #13  pc 0000000000549194  /system/lib64/libart.so (ExecuteMterpImpl+14612)
  #14  pc 0000000000476e80  /data/app/br.com.ampli-Iu6jHEjbEGkSXT0F-px5BA==/oat/arm64/base.vdex (io.objectbox.Cursor.b+4)
  #15  pc 0000000000254298  /system/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.1797368847)+488)
  #16  pc 0000000000259d8c  /system/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+216)
  #17  pc 000000000027a578  /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+940)
  #18  pc 000000000052968c  /system/lib64/libart.so (MterpInvokeVirtualQuick+584)
  #19  pc 000000000054cd94  /system/lib64/libart.so (ExecuteMterpImpl+29972)
  #20  pc 0000000000476a26  /data/app/br.com.ampli-Iu6jHEjbEGkSXT0F-px5BA==/oat/arm64/base.vdex (y0.b.a.b+18)
  #21  pc 0000000000254298  /system/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.1797368847)+488)
  #22  pc 0000000000259d8c  /system/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+216)
  #23  pc 000000000027a578  /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+940)
  #24  pc 000000000052968c  /system/lib64/libart.so (MterpInvokeVirtualQuick+584)
  #25  pc 000000000054cd94  /system/lib64/libart.so (ExecuteMterpImpl+29972)
  #26  pc 0000000000242b58  /data/app/br.com.ampli-Iu6jHEjbEGkSXT0F-px5BA==/oat/arm64/base.vdex (e.a.a.j1.d.a$a.d+108)
  #27  pc 0000000000254298  /system/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.1797368847)+488)
  #28  pc 0000000000259d8c  /system/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+216)
  #29  pc 000000000027a578  /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+940)
  #30  pc 000000000052968c  /system/lib64/libart.so (MterpInvokeVirtualQuick+584)
  #31  pc 000000000054cd94  /system/lib64/libart.so (ExecuteMterpImpl+29972)
  #32  pc 000000000047f6da  /data/app/br.com.ampli-Iu6jHEjbEGkSXT0F-px5BA==/oat/arm64/base.vdex (b1.p.i.a.a.c+18)
  #33  pc 0000000000254298  /system/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.1797368847)+488)
  #34  pc 0000000000259d8c  /system/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+216)
  #35  pc 000000000027a578  /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+940)
  #36  pc 00000000005275c4  /system/lib64/libart.so (MterpInvokeInterface+1392)
  #37  pc 0000000000549214  /system/lib64/libart.so (ExecuteMterpImpl+14740)
  #38  pc 00000000004871be  /data/app/br.com.ampli-Iu6jHEjbEGkSXT0F-px5BA==/oat/arm64/base.vdex (a0.a.p0.run+214)
  #39  pc 0000000000254298  /system/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.1797368847)+488)
  #40  pc 0000000000259d8c  /system/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+216)
  #41  pc 000000000027a578  /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+940)
  #42  pc 00000000005275c4  /system/lib64/libart.so (MterpInvokeInterface+1392)
  #43  pc 0000000000549214  /system/lib64/libart.so (ExecuteMterpImpl+14740)
  #44  pc 000000000048f514  /data/app/br.com.ampli-Iu6jHEjbEGkSXT0F-px5BA==/oat/arm64/base.vdex (a0.a.c2.b.a)
  #45  pc 0000000000254298  /system/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.1797368847)+488)
  #46  pc 0000000000259d8c  /system/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+216)
  #47  pc 000000000027a578  /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+940)
  #48  pc 000000000052968c  /system/lib64/libart.so (MterpInvokeVirtualQuick+584)
  #49  pc 000000000054cd94  /system/lib64/libart.so (ExecuteMterpImpl+29972)
  #50  pc 000000000048e69e  /data/app/br.com.ampli-Iu6jHEjbEGkSXT0F-px5BA==/oat/arm64/base.vdex (a0.a.c2.b$a.run+534)
  #51  pc 0000000000254298  /system/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.1797368847)+488)
  #52  pc 0000000000516edc  /system/lib64/libart.so (artQuickToInterpreterBridge+1020)
  #53  pc 000000000055fafc  /system/lib64/libart.so (art_quick_to_interpreter_bridge+92)
  #54  pc 0000000000556988  /system/lib64/libart.so (art_quick_invoke_stub+584)
  #55  pc 00000000000cf8c8  /system/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200)
  #56  pc 000000000045e778  /system/lib64/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+104)
  #57  pc 000000000045f834  /system/lib64/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue*)+424)
  #58  pc 000000000048a6d0  /system/lib64/libart.so (art::Thread::CreateCallback(void*)+1120)
  #59  pc 0000000000081a30  /system/lib64/libc.so (__pthread_start(void*)+36)
  #60  pc 00000000000234b8  /system/lib64/libc.so (__start_thread+68)

It is the first database interaction, or maybe the second actually Sometimes the crash happens before it fetches the User by findFirst() and sometimes user is fetched but Course entity is not (I only know this because of screenshots that some users sent us, in some of those the user name is shown, but in other isn't)

Feel free to ask me anything

I'm releasing a new version removing Zendesk's chat and messaging library, which I've added on the first version the crash start appearing, I'll keep you guys updated

greenrobot commented 4 years ago

For the stack traces you gave earlier, can you provide the Android version? That may help us checking Android sources more accurately. From what I've seen so far it may be that SetObjectField is getting a null param. We'll check possible causes next...

PS.: I guess you don't have access to any logs? It might be a follow-up error, that would identify itself as a "Entity creation failed" error log message. If we're lucky, you could confirm that.

PPS.: Let's assume it's actually that an entity could not be created (the VM does not allow it), what could be possible reasons for that? Memory issues are probably unlikely, as the app is just starting. Maybe something "weird" in your model changed, and the VM cannot create a new object using old data? You mentioned this happened after an app update. Could you fill us in on the data model changes that have been made?

PPPS.: You don't have any exceptions thrown from any constructor of your model classes?

shidobecker commented 4 years ago

@greenrobot I've investigated further my stackstraces and noticed, some changes Let me place is in chronological order and what changes I've made to help us better:

1) First Stack Trace of version 1.1.0 - 1.2.1 (same as OP) (The only difference from 1.2.0 to 1.2.1 is that I've upgraded ObjectBox version from 2.3.4 to 2.5.1)

Devices and Android version:

Samsung Galaxy S9+ (star2qltechn), 5632MB RAM, Android 10 Motorola moto g(7) (river), 3584MB RAM, Android 9 Motorola motorola one vision (kane_sprout), 3840MB RAM, Android 10 Motorola Moto X (4) (payton), 2816MB RAM, Android 9 Redmi Redmi Note 8 (ginkgo), 3840MB RAM, Android 9 Samsung Galaxy A30s (a30s), 3840MB RAM, Android 10

pid: 0, tid: 0 >>> br.com.ampli <<<

backtrace:
  #00  pc 0000000000083134  /apex/com.android.runtime/lib64/bionic/libc.so (abort+160)
  #01  pc 00000000004b3c08  /apex/com.android.runtime/lib64/libart.so (art::Runtime::Abort(char const*)+2376)
  #02  pc 000000000000c5b4  /system/lib64/libbase.so (android::base::LogMessage::~LogMessage()+608)
  #03  pc 0000000000374a94  /apex/com.android.runtime/lib64/libart.so (art::JavaVMExt::JniAbort(char const*, char const*)+1592)
  #04  pc 00000000003a74c8  /apex/com.android.runtime/lib64/libart.so (art::JNI::SetObjectField(_JNIEnv*, _jobject*, _jfieldID*, _jobject*)+924)
  #05  pc 00000000000262a4  /data/app/br.com.ampli-A-oKgSqV0pfD7IL5xQWvwQ==/base.apk!libobjectbox-jni.so (offset 0x37e000)
  #06  pc 0000000000043688  /data/app/br.com.ampli-A-oKgSqV0pfD7IL5xQWvwQ==/base.apk!libobjectbox-jni.so (offset 0x37e000) (Java_io_objectbox_query_Query_nativeFindFirst+68)
  #07  pc 000000000003fb7c  /data/app/br.com.ampli-A-oKgSqV0pfD7IL5xQWvwQ==/oat/arm64/base.odex (art_jni_trampoline+140)
  #08  pc 0000000000137334  /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_stub+548)
  #09  pc 000000000014606c  /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+244)
  #10  pc 00000000002e0cd0  /apex/com.android.runtime/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+384)
  #11  pc 00000000002dbfb0  /apex/com.android.runtime/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+912)
  #12  pc 00000000005a030c  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+596)
  #13  pc 0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #14  pc 000000000047941c  /data/app/br.com.ampli-A-oKgSqV0pfD7IL5xQWvwQ==/oat/arm64/base.vdex (io.objectbox.query.Query$a.call+28)
  #15  pc 000000000059bbe4  /apex/com.android.runtime/lib64/libart.so (MterpInvokeInterface+1740)
  #16  pc 0000000000131a14  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_interface+20)
  #17  pc 0000000000476786  /data/app/br.com.ampli-A-oKgSqV0pfD7IL5xQWvwQ==/oat/arm64/base.vdex (io.objectbox.BoxStore.a+42)
  #18  pc 00000000005a0610  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1368)
  #19  pc 0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #20  pc 0000000000476886  /data/app/br.com.ampli-A-oKgSqV0pfD7IL5xQWvwQ==/oat/arm64/base.vdex (io.objectbox.BoxStore.a+6)
  #21  pc 00000000005a0610  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1368)
  #22  pc 0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #23  pc 0000000000479a40  /data/app/br.com.ampli-A-oKgSqV0pfD7IL5xQWvwQ==/oat/arm64/base.vdex (io.objectbox.query.Query.d+40)
  #24  pc 00000000005a0610  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1368)
  #25  pc 0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #26  pc 00000000002442c6  /data/app/br.com.ampli-A-oKgSqV0pfD7IL5xQWvwQ==/oat/arm64/base.vdex (e.a.a.j1.d.a$a.d+54)
  #27  pc 00000000005a0610  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1368)
  #28  pc 0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #29  pc 000000000047fe9a  /data/app/br.com.ampli-A-oKgSqV0pfD7IL5xQWvwQ==/oat/arm64/base.vdex (b1.p.i.a.a.c+18)
  #30  pc 000000000059bbe4  /apex/com.android.runtime/lib64/libart.so (MterpInvokeInterface+1740)
  #31  pc 0000000000131a14  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_interface+20)
  #32  pc 000000000048797e  /data/app/br.com.ampli-A-oKgSqV0pfD7IL5xQWvwQ==/oat/arm64/base.vdex (a0.a.p0.run+214)
  #33  pc 000000000059bbe4  /apex/com.android.runtime/lib64/libart.so (MterpInvokeInterface+1740)
  #34  pc 0000000000131a14  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_interface+20)
  #35  pc 000000000048fcd4  /data/app/br.com.ampli-A-oKgSqV0pfD7IL5xQWvwQ==/oat/arm64/base.vdex (a0.a.c2.b.a)
  #36  pc 00000000005a0610  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1368)
  #37  pc 0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #38  pc 000000000048ee5e  /data/app/br.com.ampli-A-oKgSqV0pfD7IL5xQWvwQ==/oat/arm64/base.vdex (a0.a.c2.b$a.run+534)
  #39  pc 00000000002b191c  /apex/com.android.runtime/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.18252570399552585066)+240)
  #40  pc 000000000058b6e8  /apex/com.android.runtime/lib64/libart.so (artQuickToInterpreterBridge+1012)
  #41  pc 0000000000140468  /apex/com.android.runtime/lib64/libart.so (art_quick_to_interpreter_bridge+88)
  #42  pc 0000000000137334  /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_stub+548)
  #43  pc 000000000014606c  /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+244)
  #44  pc 00000000004ab72c  /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)
  #45  pc 00000000004ac7c0  /apex/com.android.runtime/lib64/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue const*)+416)
  #46  pc 00000000004ecb00  /apex/com.android.runtime/lib64/libart.so (art::Thread::CreateCallback(void*)+1176)
  #47  pc 00000000000e28c0  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36)
  #48  pc 000000000008503c  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)

2) From here, in version 1.2.2 I've started making some changes, as such as removing all findFirst() to boxStore.boxFor().all[0] which started giving me the following stack in the following devices:

Samsung Galaxy S9+ (star2qltechn), 5632MB RAM, Android 10 Samsung Galaxy S10 (beyond1), 7424MB RAM, Android 10 Samsung Galaxy Note8 (greatlte), 5376MB RAM, Android 9 Samsung Galaxy J6 (j6lte), 2048MB RAM, Android 10

pid: 0, tid: 0 >>> br.com.ampli <<<

backtrace:
  #00  pc 00000000000832a8  /apex/com.android.runtime/lib64/bionic/libc.so (abort+160)
  #01  pc 00000000004ba0fc  /apex/com.android.runtime/lib64/libart.so (art::Runtime::Abort(char const*)+2388)
  #02  pc 000000000000b458  /system/lib64/libbase.so (android::base::LogMessage::~LogMessage()+580)
  #03  pc 00000000003786e8  /apex/com.android.runtime/lib64/libart.so (art::JavaVMExt::JniAbort(char const*, char const*)+1584)
  #04  pc 00000000003ab2f0  /apex/com.android.runtime/lib64/libart.so (art::JNI::SetObjectField(_JNIEnv*, _jobject*, _jfieldID*, _jobject*)+924)
  #05  pc 000000000002d888  /data/app/br.com.ampli-mGnbZRHMFBBmkWDtoNmKGQ==/base.apk!libobjectbox-jni.so (offset 0x37f000)
  #06  pc 0000000000029e50  /data/app/br.com.ampli-mGnbZRHMFBBmkWDtoNmKGQ==/base.apk!libobjectbox-jni.so (offset 0x37f000) (Java_io_objectbox_Cursor_nativeFirstEntity+68)
  #07  pc 000000000011f518  /data/app/br.com.ampli-mGnbZRHMFBBmkWDtoNmKGQ==/oat/arm64/base.odex (art_jni_trampoline+152)
  #08  pc 00000000001375b8  /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_static_stub+568)
  #09  pc 000000000014600c  /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+276)
  #10  pc 00000000002e3d6c  /apex/com.android.runtime/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+384)
  #11  pc 00000000002defcc  /apex/com.android.runtime/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+892)
  #12  pc 00000000005a4680  /apex/com.android.runtime/lib64/libart.so (MterpInvokeStatic+372)
  #13  pc 0000000000131994  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_static+20)
  #14  pc 0000000000460b8e  /data/app/br.com.ampli-mGnbZRHMFBBmkWDtoNmKGQ==/oat/arm64/base.vdex (io.objectbox.Cursor.b+4)
  #15  pc 00000000005a7fbc  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1292)
  #16  pc 0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #17  pc 0000000000460858  /data/app/br.com.ampli-mGnbZRHMFBBmkWDtoNmKGQ==/oat/arm64/base.vdex (y0.b.a.b+18)
  #18  pc 00000000005a7fbc  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1292)
  #19  pc 0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #20  pc 000000000033600e  /data/app/br.com.ampli-mGnbZRHMFBBmkWDtoNmKGQ==/oat/arm64/base.vdex (e.a.a.j1.d.a$a.d+108)
  #21  pc 00000000002b5080  /apex/com.android.runtime/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.7038959461964381116)+240)
  #22  pc 0000000000593114  /apex/com.android.runtime/lib64/libart.so (artQuickToInterpreterBridge+1032)
  #23  pc 0000000000140468  /apex/com.android.runtime/lib64/libart.so (art_quick_to_interpreter_bridge+88)
  #24  pc 0000000000311598  /data/app/br.com.ampli-mGnbZRHMFBBmkWDtoNmKGQ==/oat/arm64/base.odex (b1.p.i.a.a.c+104)
  #25  pc 00000000002f7e60  /data/app/br.com.ampli-mGnbZRHMFBBmkWDtoNmKGQ==/oat/arm64/base.odex (a0.a.p0.run+1008)
  #26  pc 00000000001735e0  /data/app/br.com.ampli-mGnbZRHMFBBmkWDtoNmKGQ==/oat/arm64/base.odex (a0.a.c2.b.a+64)
  #27  pc 0000000000171eec  /data/app/br.com.ampli-mGnbZRHMFBBmkWDtoNmKGQ==/oat/arm64/base.odex (a0.a.c2.b$a.run+2156)
  #28  pc 0000000000137334  /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_stub+548)
  #29  pc 0000000000145fec  /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+244)
  #30  pc 00000000004b1884  /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)
  #31  pc 00000000004b2998  /apex/com.android.runtime/lib64/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue const*)+416)
  #32  pc 00000000004f38c4  /apex/com.android.runtime/lib64/libart.so (art::Thread::CreateCallback(void*)+1176)
  #33  pc 00000000000e6f10  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36)
  #34  pc 00000000000850c8  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)

But on this same version, on the same device

Samsung Galaxy S10 (beyond1), 7424MB RAM, Android 10

This changed stacktrace started showing:


pid: 0, tid: 0 >>> br.com.ampli <<<

backtrace:
  #00  pc 0000000000083360  /apex/com.android.runtime/lib64/bionic/libc.so (abort+176)
  #01  pc 00000000004bafb0  /apex/com.android.runtime/lib64/libart.so (art::Runtime::Abort(char const*)+2280)
  #02  pc 000000000000c650  /system/lib64/libbase.so (android::base::LogMessage::~LogMessage()+608)
  #03  pc 00000000005004d8  /apex/com.android.runtime/lib64/libart.so (art::Thread::AssertNoPendingException() const+1144)
  #04  pc 00000000001666e0  /apex/com.android.runtime/lib64/libart.so (art::ClassLinker::FindClass(art::Thread*, char const*, art::Handle<art::mirror::ClassLoader>)+64)
  #05  pc 00000000001536f8  /apex/com.android.runtime/lib64/libart.so (art::ClassLinker::DoResolveType(art::dex::TypeIndex, art::Handle<art::mirror::DexCache>, art::Handle<art::mirror::ClassLoader>)+184)
  #06  pc 0000000000527fd4  /apex/com.android.runtime/lib64/libart.so (_ZN3art8verifier4impl12_GLOBAL__N_114MethodVerifierILb0EE6VerifyEv$09bf97eb2c0d684adb6d215f7005036e+1532)
  #07  pc 000000000052bc3c  /apex/com.android.runtime/lib64/libart.so (art::verifier::MethodVerifier::FindLocksAtDexPc(art::ArtMethod*, unsigned int, std::__1::vector<art::verifier::MethodVerifier::DexLockInfo, std::__1::allocator<art::verifier::MethodVerifier::DexLockInfo>>*, unsigned int)+644)
  #08  pc 000000000041119c  /apex/com.android.runtime/lib64/libart.so (art::Monitor::VisitLocks(art::StackVisitor*, void (*)(art::ObjPtr<art::mirror::Object>, void*), void*, bool)+820)
  #09  pc 0000000000412164  /apex/com.android.runtime/lib64/libart.so (art::MonitorObjectsStackVisitor::VisitFrame()+164)
  #10  pc 00000000004dd73c  /apex/com.android.runtime/lib64/libart.so (void art::StackVisitor::WalkStack<(art::StackVisitor::CountTransitions)0>(bool)+428)
  #11  pc 00000000004ff20c  /apex/com.android.runtime/lib64/libart.so (art::Thread::DumpJavaStack(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, bool, bool) const+444)
  #12  pc 00000000004fb038  /apex/com.android.runtime/lib64/libart.so (art::Thread::DumpStack(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, bool, BacktraceMap*, bool) const+528)
  #13  pc 0000000000515744  /apex/com.android.runtime/lib64/libart.so (art::DumpCheckpoint::Run(art::Thread*)+820)
  #14  pc 000000000050ead4  /apex/com.android.runtime/lib64/libart.so (art::ThreadList::RunCheckpoint(art::Closure*, art::Closure*)+1348)
  #15  pc 000000000050db60  /apex/com.android.runtime/lib64/libart.so (art::ThreadList::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, bool)+1792)
  #16  pc 00000000004bac10  /apex/com.android.runtime/lib64/libart.so (art::Runtime::Abort(char const*)+1352)
  #17  pc 000000000000c650  /system/lib64/libbase.so (android::base::LogMessage::~LogMessage()+608)
  #18  pc 000000000037923c  /apex/com.android.runtime/lib64/libart.so (art::JavaVMExt::JniAbort(char const*, char const*)+1604)
  #19  pc 00000000003ac464  /apex/com.android.runtime/lib64/libart.so (art::JNI::SetObjectField(_JNIEnv*, _jobject*, _jfieldID*, _jobject*)+924)
  #20  pc 000000000002d888  /data/app/br.com.ampli-W9kKkyXljD0nrJiJv1NY5Q==/base.apk!libobjectbox-jni.so (offset 0x37f000)
  #21  pc 0000000000029e50  /data/app/br.com.ampli-W9kKkyXljD0nrJiJv1NY5Q==/base.apk!libobjectbox-jni.so (offset 0x37f000) (Java_io_objectbox_Cursor_nativeFirstEntity+68)
  #22  pc 00000000000f0518  /data/app/br.com.ampli-W9kKkyXljD0nrJiJv1NY5Q==/oat/arm64/base.odex (art_jni_trampoline+152)
  #23  pc 00000000001375b8  /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_static_stub+568)
  #24  pc 00000000001460cc  /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+276)
  #25  pc 00000000002e3be8  /apex/com.android.runtime/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+384)
  #26  pc 00000000002dec74  /apex/com.android.runtime/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+900)
  #27  pc 00000000005a5650  /apex/com.android.runtime/lib64/libart.so (MterpInvokeStatic+368)
  #28  pc 0000000000131994  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_static+20)
  #29  pc 000000000045e2f6  /data/app/br.com.ampli-W9kKkyXljD0nrJiJv1NY5Q==/oat/arm64/base.vdex (io.objectbox.Cursor.b+4)
  #30  pc 00000000005a8fd8  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1368)
  #31  pc 0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #32  pc 000000000045df70  /data/app/br.com.ampli-W9kKkyXljD0nrJiJv1NY5Q==/oat/arm64/base.vdex (y0.b.a.b+18)
  #33  pc 00000000005a8fd8  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1368)
  #34  pc 0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #35  pc 000000000033deaa  /data/app/br.com.ampli-W9kKkyXljD0nrJiJv1NY5Q==/oat/arm64/base.vdex (e.a.a.j1.d.a$a.d+108)
  #36  pc 00000000002b4518  /apex/com.android.runtime/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.14549768435847923494)+240)
  #37  pc 0000000000593f48  /apex/com.android.runtime/lib64/libart.so (artQuickToInterpreterBridge+1024)
  #38  pc 0000000000140468  /apex/com.android.runtime/lib64/libart.so (art_quick_to_interpreter_bridge+88)
  #39  pc 000000000029fb88  /data/app/br.com.ampli-W9kKkyXljD0nrJiJv1NY5Q==/oat/arm64/base.odex (b1.p.i.a.a.c+104)
  #40  pc 0000000000137334  /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_stub+548)
  #41  pc 00000000001460ac  /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+244)
  #42  pc 00000000002e3be8  /apex/com.android.runtime/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+384)
  #43  pc 00000000002dec74  /apex/com.android.runtime/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+900)
  #44  pc 00000000005a4244  /apex/com.android.runtime/lib64/libart.so (MterpInvokeInterface+868)
  #45  pc 0000000000131a14  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_interface+20)
  #46  pc 0000000000465ae2  /data/app/br.com.ampli-W9kKkyXljD0nrJiJv1NY5Q==/oat/arm64/base.vdex (a0.a.p0.run+214)
  #47  pc 00000000005a45ac  /apex/com.android.runtime/lib64/libart.so (MterpInvokeInterface+1740)
  #48  pc 0000000000131a14  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_interface+20)
  #49  pc 000000000046b262  /data/app/br.com.ampli-W9kKkyXljD0nrJiJv1NY5Q==/oat/arm64/base.vdex (a0.a.c2.b.a)
  #50  pc 00000000005a8fd8  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1368)
  #51  pc 0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #52  pc 000000000046a614  /data/app/br.com.ampli-W9kKkyXljD0nrJiJv1NY5Q==/oat/arm64/base.vdex (a0.a.c2.b$a.run+534)
  #53  pc 00000000002b4518  /apex/com.android.runtime/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.14549768435847923494)+240)
  #54  pc 0000000000593f48  /apex/com.android.runtime/lib64/libart.so (artQuickToInterpreterBridge+1024)
  #55  pc 0000000000140468  /apex/com.android.runtime/lib64/libart.so (art_quick_to_interpreter_bridge+88)
  #56  pc 0000000000137334  /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_stub+548)
  #57  pc 00000000001460ac  /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+244)
  #58  pc 00000000004b2aa0  /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)
  #59  pc 00000000004b3b50  /apex/com.android.runtime/lib64/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue const*)+416)
  #60  pc 00000000004f4600  /apex/com.android.runtime/lib64/libart.so (art::Thread::CreateCallback(void*)+1176)
  #61  pc 00000000000e3b14  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36)
  #62  pc 0000000000085330  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)

3) Then I downgraded Zendesk's library back from 4.0.0 to 3.0.1 on version app version 1.2.3

The following stacktrace were observed on devices:

Motorola moto e⁶ plus (pokerp), 2048MB RAM, Android 9 Samsung Galaxy A50 (a50), 3840MB RAM, Android 10 Samsung Galaxy A20 (a20), 2816MB RAM, Android 9 Samsung Galaxy A30s (a30s), 3840MB RAM, Android 10 Motorola motorola one vision (kane_sprout), 3840MB RAM, Android 10


 pid: 0, tid: 0 >>> br.com.ampli <<<

backtrace:
  #00  pc 0000000000021abc  /system/lib64/libc.so (abort+124)
  #01  pc 000000000046ad08  /system/lib64/libart.so (art::Runtime::Abort(char const*)+1208)
  #02  pc 0000000000008d2c  /system/lib64/libbase.so (android::base::LogMessage::~LogMessage()+724)
  #03  pc 00000000002e8868  /system/lib64/libart.so (art::JavaVMExt::JniAbort(char const*, char const*)+1656)
  #04  pc 0000000000356040  /system/lib64/libart.so (art::JNI::SetObjectField(_JNIEnv*, _jobject*, _jfieldID*, _jobject*)+944)
  #05  pc 000000000002d888  /data/app/br.com.ampli-F521jvgYCn3FqsGDmOgp-Q==/base.apk (offset 0x37f000)
  #06  pc 0000000000029e50  /data/app/br.com.ampli-F521jvgYCn3FqsGDmOgp-Q==/base.apk (offset 0x37f000) (Java_io_objectbox_Cursor_nativeFirstEntity+68)
  #07  pc 000000000003e568  /data/app/br.com.ampli-F521jvgYCn3FqsGDmOgp-Q==/oat/arm64/base.odex (offset 0x3e000) (io.objectbox.BoxStore.nativeDiagnose [DEDUPED]+152)
  #08  pc 000000000055ce4c  /system/lib64/libart.so (art_quick_invoke_static_stub+604)
  #09  pc 00000000000cf760  /system/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+232)
  #10  pc 00000000002823c0  /system/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+344)
  #11  pc 000000000027c37c  /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+948)
  #12  pc 000000000052d9fc  /system/lib64/libart.so (MterpInvokeStatic+204)
  #13  pc 000000000054f314  /system/lib64/libart.so (ExecuteMterpImpl+14612)
  #14  pc 0000000000476e80  /data/app/br.com.ampli-F521jvgYCn3FqsGDmOgp-Q==/oat/arm64/base.vdex (io.objectbox.Cursor.b+4)
  #15  pc 0000000000255e78  /system/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.1615457923)+496)
  #16  pc 000000000025b9f8  /system/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+216)
  #17  pc 000000000027c360  /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+920)
  #18  pc 000000000052f548  /system/lib64/libart.so (MterpInvokeVirtualQuick+584)
  #19  pc 0000000000552f14  /system/lib64/libart.so (ExecuteMterpImpl+29972)
  #20  pc 0000000000476a26  /data/app/br.com.ampli-F521jvgYCn3FqsGDmOgp-Q==/oat/arm64/base.vdex (y0.b.a.b+18)
  #21  pc 0000000000255e78  /system/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.1615457923)+496)
  #22  pc 000000000025b9f8  /system/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+216)
  #23  pc 000000000027c360  /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+920)
  #24  pc 000000000052f548  /system/lib64/libart.so (MterpInvokeVirtualQuick+584)
  #25  pc 0000000000552f14  /system/lib64/libart.so (ExecuteMterpImpl+29972)
  #26  pc 0000000000242b58  /data/app/br.com.ampli-F521jvgYCn3FqsGDmOgp-Q==/oat/arm64/base.vdex (e.a.a.j1.d.a$a.d+108)
  #27  pc 0000000000255e78  /system/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.1615457923)+496)
  #28  pc 000000000025b9f8  /system/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+216)
  #29  pc 000000000027c360  /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+920)
  #30  pc 000000000052f548  /system/lib64/libart.so (MterpInvokeVirtualQuick+584)
  #31  pc 0000000000552f14  /system/lib64/libart.so (ExecuteMterpImpl+29972)
  #32  pc 000000000047f6da  /data/app/br.com.ampli-F521jvgYCn3FqsGDmOgp-Q==/oat/arm64/base.vdex (b1.p.i.a.a.c+18)
  #33  pc 0000000000255e78  /system/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.1615457923)+496)
  #34  pc 000000000025b9f8  /system/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+216)
  #35  pc 000000000027c360  /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+920)
  #36  pc 000000000052d470  /system/lib64/libart.so (MterpInvokeInterface+1392)
  #37  pc 000000000054f394  /system/lib64/libart.so (ExecuteMterpImpl+14740)
  #38  pc 00000000004871be  /data/app/br.com.ampli-F521jvgYCn3FqsGDmOgp-Q==/oat/arm64/base.vdex (a0.a.p0.run+214)
  #39  pc 0000000000255e78  /system/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.1615457923)+496)
  #40  pc 000000000025b9f8  /system/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+216)
  #41  pc 000000000027c360  /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+920)
  #42  pc 000000000052d470  /system/lib64/libart.so (MterpInvokeInterface+1392)
  #43  pc 000000000054f394  /system/lib64/libart.so (ExecuteMterpImpl+14740)
  #44  pc 000000000048f514  /data/app/br.com.ampli-F521jvgYCn3FqsGDmOgp-Q==/oat/arm64/base.vdex (a0.a.c2.b.a)
  #45  pc 0000000000255e78  /system/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.1615457923)+496)
  #46  pc 000000000025b9f8  /system/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+216)
  #47  pc 000000000027c360  /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+920)
  #48  pc 000000000052f548  /system/lib64/libart.so (MterpInvokeVirtualQuick+584)
  #49  pc 0000000000552f14  /system/lib64/libart.so (ExecuteMterpImpl+29972)
  #50  pc 000000000048e69e  /data/app/br.com.ampli-F521jvgYCn3FqsGDmOgp-Q==/oat/arm64/base.vdex (a0.a.c2.b$a.run+534)
  #51  pc 0000000000255e78  /system/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.1615457923)+496)
  #52  pc 000000000051cc38  /system/lib64/libart.so (artQuickToInterpreterBridge+1032)
  #53  pc 0000000000565cfc  /system/lib64/libart.so (art_quick_to_interpreter_bridge+92)
  #54  pc 000000000055cb88  /system/lib64/libart.so (art_quick_invoke_stub+584)
  #55  pc 00000000000cf740  /system/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200)
  #56  pc 00000000004633c0  /system/lib64/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+104)
  #57  pc 0000000000464488  /system/lib64/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue*)+424)
  #58  pc 000000000048f7f8  /system/lib64/libart.so (art::Thread::CreateCallback(void*)+1120)
  #59  pc 0000000000083114  /system/lib64/libc.so (__pthread_start(void*)+36)
  #60  pc 00000000000233bc  /system/lib64/libc.so (__start_thread+68)

4) Finally I've removed the following libraries on version 1.2.4 (Current Store Version):

com.zendesk:chat:2.0.0 com.zendesk:messaging:4.2.1 com.github.skydoves:powermenu:2.1.2

And some users were able to use the app as normally, specifically the Motorola motorola one vision (kane_sprout), 3840MB RAM, Android 10 user

But the following devices are showing the following backtrace

Samsung Galaxy S10 (beyond1), 7424MB RAM, Android 10

pid: 0, tid: 0 >>> br.com.ampli <<<

backtrace:
  #00  pc 0000000000083360  /apex/com.android.runtime/lib64/bionic/libc.so (abort+176)
  #01  pc 00000000004bafb0  /apex/com.android.runtime/lib64/libart.so (art::Runtime::Abort(char const*)+2280)
  #02  pc 000000000000c650  /system/lib64/libbase.so (android::base::LogMessage::~LogMessage()+608)
  #03  pc 00000000005004d8  /apex/com.android.runtime/lib64/libart.so (art::Thread::AssertNoPendingException() const+1144)
  #04  pc 00000000001666e0  /apex/com.android.runtime/lib64/libart.so (art::ClassLinker::FindClass(art::Thread*, char const*, art::Handle<art::mirror::ClassLoader>)+64)
  #05  pc 00000000001536f8  /apex/com.android.runtime/lib64/libart.so (art::ClassLinker::DoResolveType(art::dex::TypeIndex, art::Handle<art::mirror::DexCache>, art::Handle<art::mirror::ClassLoader>)+184)
  #06  pc 0000000000527fd4  /apex/com.android.runtime/lib64/libart.so (_ZN3art8verifier4impl12_GLOBAL__N_114MethodVerifierILb0EE6VerifyEv$09bf97eb2c0d684adb6d215f7005036e+1532)
  #07  pc 000000000052bc3c  /apex/com.android.runtime/lib64/libart.so (art::verifier::MethodVerifier::FindLocksAtDexPc(art::ArtMethod*, unsigned int, std::__1::vector<art::verifier::MethodVerifier::DexLockInfo, std::__1::allocator<art::verifier::MethodVerifier::DexLockInfo>>*, unsigned int)+644)
  #08  pc 000000000041119c  /apex/com.android.runtime/lib64/libart.so (art::Monitor::VisitLocks(art::StackVisitor*, void (*)(art::ObjPtr<art::mirror::Object>, void*), void*, bool)+820)
  #09  pc 0000000000412164  /apex/com.android.runtime/lib64/libart.so (art::MonitorObjectsStackVisitor::VisitFrame()+164)
  #10  pc 00000000004ddbc8  /apex/com.android.runtime/lib64/libart.so (void art::StackVisitor::WalkStack<(art::StackVisitor::CountTransitions)0>(bool)+1592)
  #11  pc 00000000004ff20c  /apex/com.android.runtime/lib64/libart.so (art::Thread::DumpJavaStack(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, bool, bool) const+444)
  #12  pc 00000000004fb038  /apex/com.android.runtime/lib64/libart.so (art::Thread::DumpStack(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, bool, BacktraceMap*, bool) const+528)
  #13  pc 0000000000515744  /apex/com.android.runtime/lib64/libart.so (art::DumpCheckpoint::Run(art::Thread*)+820)
  #14  pc 000000000050ead4  /apex/com.android.runtime/lib64/libart.so (art::ThreadList::RunCheckpoint(art::Closure*, art::Closure*)+1348)
  #15  pc 000000000050db60  /apex/com.android.runtime/lib64/libart.so (art::ThreadList::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char>>&, bool)+1792)
  #16  pc 00000000004bac10  /apex/com.android.runtime/lib64/libart.so (art::Runtime::Abort(char const*)+1352)
  #17  pc 000000000000c650  /system/lib64/libbase.so (android::base::LogMessage::~LogMessage()+608)
  #18  pc 000000000037923c  /apex/com.android.runtime/lib64/libart.so (art::JavaVMExt::JniAbort(char const*, char const*)+1604)
  #19  pc 00000000003ac464  /apex/com.android.runtime/lib64/libart.so (art::JNI::SetObjectField(_JNIEnv*, _jobject*, _jfieldID*, _jobject*)+924)
  #20  pc 000000000002d888  /data/app/br.com.ampli-8gie6bi1D_decfX_cv1Ibg==/base.apk!libobjectbox-jni.so (offset 0x355000)
  #21  pc 0000000000029e50  /data/app/br.com.ampli-8gie6bi1D_decfX_cv1Ibg==/base.apk!libobjectbox-jni.so (offset 0x355000) (Java_io_objectbox_Cursor_nativeFirstEntity+68)
  #22  pc 0000000000037518  /data/app/br.com.ampli-8gie6bi1D_decfX_cv1Ibg==/oat/arm64/base.odex (art_jni_trampoline+152)
  #23  pc 00000000001375b8  /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_static_stub+568)
  #24  pc 00000000001460cc  /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+276)
  #25  pc 00000000002e3be8  /apex/com.android.runtime/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+384)
  #26  pc 00000000002dec74  /apex/com.android.runtime/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+900)
  #27  pc 00000000005a5650  /apex/com.android.runtime/lib64/libart.so (MterpInvokeStatic+368)
  #28  pc 0000000000131994  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_static+20)
  #29  pc 000000000047fdf4  /data/app/br.com.ampli-8gie6bi1D_decfX_cv1Ibg==/oat/arm64/base.vdex (io.objectbox.Cursor.b+4)
  #30  pc 00000000005a8fd8  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1368)
  #31  pc 0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #32  pc 000000000047f99a  /data/app/br.com.ampli-8gie6bi1D_decfX_cv1Ibg==/oat/arm64/base.vdex (y0.b.a.b+18)
  #33  pc 00000000005a8fd8  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1368)
  #34  pc 0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #35  pc 000000000024e94c  /data/app/br.com.ampli-8gie6bi1D_decfX_cv1Ibg==/oat/arm64/base.vdex (e.a.a.j1.d.a$a.d+108)
  #36  pc 00000000005a8fd8  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1368)
  #37  pc 0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #38  pc 000000000048864e  /data/app/br.com.ampli-8gie6bi1D_decfX_cv1Ibg==/oat/arm64/base.vdex (b1.p.i.a.a.c+18)
  #39  pc 00000000005a45ac  /apex/com.android.runtime/lib64/libart.so (MterpInvokeInterface+1740)
  #40  pc 0000000000131a14  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_interface+20)
  #41  pc 0000000000490132  /data/app/br.com.ampli-8gie6bi1D_decfX_cv1Ibg==/oat/arm64/base.vdex (a0.a.p0.run+214)
  #42  pc 00000000005a45ac  /apex/com.android.runtime/lib64/libart.so (MterpInvokeInterface+1740)
  #43  pc 0000000000131a14  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_interface+20)
  #44  pc 0000000000498488  /data/app/br.com.ampli-8gie6bi1D_decfX_cv1Ibg==/oat/arm64/base.vdex (a0.a.c2.b.a)
  #45  pc 00000000005a8fd8  /apex/com.android.runtime/lib64/libart.so (MterpInvokeVirtualQuick+1368)
  #46  pc 0000000000135594  /apex/com.android.runtime/lib64/libart.so (mterp_op_invoke_virtual_quick+20)
  #47  pc 0000000000497612  /data/app/br.com.ampli-8gie6bi1D_decfX_cv1Ibg==/oat/arm64/base.vdex (a0.a.c2.b$a.run+534)
  #48  pc 00000000002b4518  /apex/com.android.runtime/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.14549768435847923494)+240)
  #49  pc 0000000000593f48  /apex/com.android.runtime/lib64/libart.so (artQuickToInterpreterBridge+1024)
  #50  pc 0000000000140468  /apex/com.android.runtime/lib64/libart.so (art_quick_to_interpreter_bridge+88)
  #51  pc 0000000000137334  /apex/com.android.runtime/lib64/libart.so (art_quick_invoke_stub+548)
  #52  pc 00000000001460ac  /apex/com.android.runtime/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+244)
  #53  pc 00000000004b2aa0  /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)
  #54  pc 00000000004b3b50  /apex/com.android.runtime/lib64/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue const*)+416)
  #55  pc 00000000004f4600  /apex/com.android.runtime/lib64/libart.so (art::Thread::CreateCallback(void*)+1176)
  #56  pc 00000000000e3b14  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36)
  #57  pc 0000000000085330  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)

Asus ZenFone Max Pro M1 (ZB602KL) (WW) / Max Pro M1 (ZB601KL) (IN) (ASUS_X00T_4), 3840MB RAM, Android 9

pid: 0, tid: 0 >>> br.com.ampli <<<

backtrace:

00 pc 00000000000220ac /system/lib64/libc.so (abort+116)

01 pc 00000000004641c8 /system/lib64/libart.so (art::Runtime::Abort(char const*)+1196)

02 pc 0000000000008ce0 /system/lib64/libbase.so (android::base::LogMessage::~LogMessage()+724)

03 pc 00000000002e4e58 /system/lib64/libart.so (art::JavaVMExt::JniAbort(char const, char const)+1640)

04 pc 0000000000351684 /system/lib64/libart.so (art::JNI::SetObjectField(_JNIEnv, _jobject, _jfieldID, _jobject)+944)

05 pc 000000000002d888 /data/app/br.com.ampli-YeMK2le3WoMHOiHa2ttdzw==/base.apk (offset 0x355000)

06 pc 0000000000029e50 /data/app/br.com.ampli-YeMK2le3WoMHOiHa2ttdzw==/base.apk (offset 0x355000) (Java_io_objectbox_Cursor_nativeFirstEntity+68)

07 pc 0000000000037568 /data/app/br.com.ampli-YeMK2le3WoMHOiHa2ttdzw==/oat/arm64/base.odex (offset 0x37000) (io.objectbox.BoxStore.nativeDiagnose [DEDUPED]+152)

08 pc 000000000055544c /system/lib64/libart.so (art_quick_invoke_static_stub+604)

09 pc 00000000000cf6e8 /system/lib64/libart.so (art::ArtMethod::Invoke(art::Thread, unsigned int, unsigned int, art::JValue, char const)+232)

10 pc 000000000027f2b8 /system/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread, art::ArtMethod, art::ShadowFrame, unsigned short, art::JValue)+344)

11 pc 00000000002792c0 /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod, art::Thread, art::ShadowFrame&, art::Instruction const, unsigned short, art::JValue)+968)

12 pc 0000000000525cc8 /system/lib64/libart.so (MterpInvokeStatic+204)

13 pc 0000000000547914 /system/lib64/libart.so (ExecuteMterpImpl+14612)

14 pc 000000000047fdec /data/app/br.com.ampli-YeMK2le3WoMHOiHa2ttdzw==/oat/arm64/base.vdex (io.objectbox.Cursor.b+4)

15 pc 0000000000252fc4 /system/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.1212041784)+488)

16 pc 0000000000258ab8 /system/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread, art::CodeItemDataAccessor const&, art::ShadowFrame, art::JValue*)+216)

17 pc 00000000002792a4 /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod, art::Thread, art::ShadowFrame&, art::Instruction const, unsigned short, art::JValue)+940)

18 pc 0000000000527808 /system/lib64/libart.so (MterpInvokeVirtualQuick+584)

19 pc 000000000054b514 /system/lib64/libart.so (ExecuteMterpImpl+29972)

20 pc 000000000047f992 /data/app/br.com.ampli-YeMK2le3WoMHOiHa2ttdzw==/oat/arm64/base.vdex (y0.b.a.b+18)

21 pc 0000000000252fc4 /system/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.1212041784)+488)

22 pc 0000000000258ab8 /system/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread, art::CodeItemDataAccessor const&, art::ShadowFrame, art::JValue*)+216)

23 pc 00000000002792a4 /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod, art::Thread, art::ShadowFrame&, art::Instruction const, unsigned short, art::JValue)+940)

24 pc 0000000000527808 /system/lib64/libart.so (MterpInvokeVirtualQuick+584)

25 pc 000000000054b514 /system/lib64/libart.so (ExecuteMterpImpl+29972)

26 pc 000000000024e944 /data/app/br.com.ampli-YeMK2le3WoMHOiHa2ttdzw==/oat/arm64/base.vdex (e.a.a.j1.d.a$a.d+108)

27 pc 0000000000252fc4 /system/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.1212041784)+488)

28 pc 0000000000258ab8 /system/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread, art::CodeItemDataAccessor const&, art::ShadowFrame, art::JValue*)+216)

29 pc 00000000002792a4 /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod, art::Thread, art::ShadowFrame&, art::Instruction const, unsigned short, art::JValue)+940)

30 pc 0000000000527808 /system/lib64/libart.so (MterpInvokeVirtualQuick+584)

31 pc 000000000054b514 /system/lib64/libart.so (ExecuteMterpImpl+29972)

32 pc 0000000000488646 /data/app/br.com.ampli-YeMK2le3WoMHOiHa2ttdzw==/oat/arm64/base.vdex (b1.p.i.a.a.c+18)

33 pc 0000000000252fc4 /system/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.1212041784)+488)

34 pc 0000000000258ab8 /system/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread, art::CodeItemDataAccessor const&, art::ShadowFrame, art::JValue*)+216)

35 pc 00000000002792a4 /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod, art::Thread, art::ShadowFrame&, art::Instruction const, unsigned short, art::JValue)+940)

36 pc 0000000000525740 /system/lib64/libart.so (MterpInvokeInterface+1392)

37 pc 0000000000547994 /system/lib64/libart.so (ExecuteMterpImpl+14740)

38 pc 000000000049012a /data/app/br.com.ampli-YeMK2le3WoMHOiHa2ttdzw==/oat/arm64/base.vdex (a0.a.p0.run+214)

39 pc 0000000000252fc4 /system/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.1212041784)+488)

40 pc 0000000000258ab8 /system/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread, art::CodeItemDataAccessor const&, art::ShadowFrame, art::JValue*)+216)

41 pc 00000000002792a4 /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod, art::Thread, art::ShadowFrame&, art::Instruction const, unsigned short, art::JValue)+940)

42 pc 0000000000525740 /system/lib64/libart.so (MterpInvokeInterface+1392)

43 pc 0000000000547994 /system/lib64/libart.so (ExecuteMterpImpl+14740)

44 pc 0000000000498480 /data/app/br.com.ampli-YeMK2le3WoMHOiHa2ttdzw==/oat/arm64/base.vdex (a0.a.c2.b.a)

45 pc 0000000000252fc4 /system/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.1212041784)+488)

46 pc 0000000000258ab8 /system/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread, art::CodeItemDataAccessor const&, art::ShadowFrame, art::JValue*)+216)

47 pc 00000000002792a4 /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod, art::Thread, art::ShadowFrame&, art::Instruction const, unsigned short, art::JValue)+940)

48 pc 0000000000527808 /system/lib64/libart.so (MterpInvokeVirtualQuick+584)

49 pc 000000000054b514 /system/lib64/libart.so (ExecuteMterpImpl+29972)

50 pc 000000000049760a /data/app/br.com.ampli-YeMK2le3WoMHOiHa2ttdzw==/oat/arm64/base.vdex (a0.a.c2.b$a.run+534)

51 pc 0000000000252fc4 /system/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.1212041784)+488)

52 pc 0000000000515058 /system/lib64/libart.so (artQuickToInterpreterBridge+1020)

53 pc 000000000055e2fc /system/lib64/libart.so (art_quick_to_interpreter_bridge+92)

54 pc 0000000000555188 /system/lib64/libart.so (art_quick_invoke_stub+584)

55 pc 00000000000cf6c8 /system/lib64/libart.so (art::ArtMethod::Invoke(art::Thread, unsigned int, unsigned int, art::JValue, char const)+200)

56 pc 000000000045c8f4 /system/lib64/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod, art::(anonymous namespace)::ArgArray, art::JValue, char const)+104)

57 pc 000000000045d9b0 /system/lib64/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject, _jmethodID, jvalue*)+424)

58 pc 000000000048884c /system/lib64/libart.so (art::Thread::CreateCallback(void*)+1120)

59 pc 0000000000091fac /system/lib64/libc.so (__pthread_start(void*)+36)

60 pc 0000000000023968 /system/lib64/libc.so (__start_thread+68)

shidobecker commented 4 years ago

@greenrobot Now let me answer your questions, since the other post was way too long

PS.: I guess you don't have access to any logs? It might be a follow-up error, that would identify itself as a "Entity creation failed" error log message. If we're lucky, you could confirm that.

This is all log I can't get, I'm unable to reproduce it in house so I think this is the most info I can get, but if there's something more I could get, feel free to ask

PPS.: Let's assume it's actually that an entity could not be created (the VM does not allow it), what could be possible reasons for that? Memory issues are probably unlikely, as the app is just starting. Maybe something "weird" in your model changed, and the VM cannot create a new object using old data? You mentioned this happened after an app update. Could you fill us in on the data model changes that have been made?

There's only one model change, on my Course entity I've added : var studentId: String = ""

@Entity
data class Course(

    @Id var boxId: Long = 0L,

    @Index var id: String = UUID.randomUUID().toString(),

    var version: Int = 0,

    var name: String = "",

    var percentageCompletion: Int = 0,

    var startDateInEpochDay: Long = 0L,

    var endDateInEpochDay: Long = 0L
) {

    var disciplines: ToMany<Discipline> = ToMany(this, Course_.disciplines)

    companion object {
        const val MIN_PERCENTAGE_COMPLETION = 100
    }
}

To

@Entity
data class Course(

    @Id var boxId: Long = 0L,

    @Index var id: String = UUID.randomUUID().toString(),

    var version: Int = 0,

    var name: String = "",

    var studentId: String = "",

    var percentageCompletion: Int = 0,

    var startDateInEpochDay: Long = 0L,

    var endDateInEpochDay: Long = 0L
) {

    var disciplines: ToMany<Discipline> = ToMany(this, Course_.disciplines)

    companion object {
        const val MIN_PERCENTAGE_COMPLETION = 100
    }
}

PPPS.: You don't have any exceptions thrown from any constructor of your model classes? No any, on any device that I've tested. Even with release builds, even updating from a version with old couse entity to new course entity

greenrobot commented 4 years ago

Thanks for the additional info. The data model change should not be significant.

The "entity could not be created" theory seems likely, despite I don't know why that happens in your case. However, I found that this case is not always handled gracefully and the crash is a possible follow-up error. Basically, I'll try to get some hotfix version out and suggest that you'll test with that version. Than we have to see. I hope that the crash will be gone at that point. In that case it's likely you will get a Java exception instead (JNI could not create the entity after all) with the initial cause.

Do you have exception handling in place? Even if not, you might get a Java exception report instead telling you what's going wrong in the first place.

Anyway, I'll do some more testing, prepare a release, and let you know when it's ready. I'm hoping for today or tomorrow.

shidobecker commented 4 years ago

Thank you @greenrobot for answering so fast ! Well, I have this exception handling when calling my extension function findFirst()

return try {
        boxFor(model::class.java).all[0]
    } catch (e: Exception) {
        null
    }

I'll add more code send it to crashlytics once I release the new version

Thank you again, I'll wait for the new version, and if you need more info, or anything I can help you with, I'm here as well

greenrobot-team commented 4 years ago

This likely is #589. You have added a non-null property var studentId: String = "" to an existing entity. However, for existing entities this value is null because it didn't exist when they were put. So when fetching entities from the box ObjectBox will try to set studentId to null, but the Kotlin generated constructor will not allow it.

Using var studentId: String? = "" should work.

Edit: if studentId has to be non-null an alternative is using @Convert:

@Convert(dbType = String::class, converter = NullToEmptyStringConverter::class)
var nonNull: String = ""

class NullToEmptyStringConverter : PropertyConverter<String, String?> {
    override fun convertToDatabaseValue(entityProperty: String): String? {
        return entityProperty
    }

    override fun convertToEntityProperty(databaseValue: String?): String {
        return databaseValue ?: ""
    }
}
shidobecker commented 4 years ago

@greenrobot-team I'll keep that in mind for future entity changes. But I'm wondering. If that's the case, shouldn't it have happened in 100% of the cases? Specially in my migration tests? When I run the new version over an old version?

And also, users are clearing the cache, running again and the crash still happens.

There are some new users today, that downloaded the app today and can't even open it, with the same:

#06 pc 0000000000029e50 /data/app/br.com.ampli-XIFrz5YKAJvBN7aV4q1BSg==/base.apk (offset 0x355000) (Java_io_objectbox_Cursor_nativeFirstEntity+68)

Btw: On login screen I try to fetch if user is logged, which is probably what's triggering the crash

shidobecker commented 4 years ago

I'm releasing a new version changing the studentId property to String? and also adding the converter that @greenrobot-team mentioned to see if there's any change, I'm actually lost right now and don't know what to do. @greenrobot any update regarding the release?

greenrobot commented 4 years ago

We were quite certain that the issue can be circumvented by the 2 ways, @greenrobot-team presented. So we thought you should be good. Sorry about that assumption. Because you are right that this does not explain what's going on with new users without previous data. So, we'll prioritize the release again for tomorrow.

shidobecker commented 4 years ago

I hope so @greenrobot, I'll keep you guys updated if there's an positive effect on our users, but still look forward for the new release, and thank you again in advance

greenrobot-team commented 4 years ago

@shidobecker Just to clarify, the two solutions are either/or, not both at the same time.

shidobecker commented 4 years ago

@greenrobot-team and @greenrobot Thank you guys so much, the solution worked like a charm, no more crashes shown since I released.

@greenrobot-team I see, so I probably messed up something when I was running the migration test but when I did change one only one of those things, I kept getting DbException

Can't thank you guys enough. I've been in love with objectbox for a while, since I've try it last year, and your consideration helping me out of this, made me love it even more. Hope to test 3.0 soon !!

I'm gonna close it for now then, thanks guys!

greenrobot commented 4 years ago

Glad we could help you! For what it's worth, we just published 2.6.0-RC which should not crash, but give the proper Java exception if a constructor throws.