Quantcast
Channel: Mobile - Couchbase Forums
Viewing all articles
Browse latest Browse all 1122

Crash in JNI from Android SDK: std::bad_alloc

$
0
0

While putting together some benchmarks in a fork of Realm’s benchmarks, I ran into a crash in Couchbase on Android. It happens every time I run the benchmarks with ./gradlew clean benchmarkReport on the couchbase branch.

After running for several minutes, it crashes consistently in one of two places, either from Database.getDocument() or Database.save() .

Here are the functions in the CouchbaseBenchmarks code that cause the crash:

private fun addObjects() {
    val list: MutableList<MutableDocument> = mutableListOf()
    for (i in 0 until size) {
        list.add(MutableDocument(i.toString(), mapOf(
                NAME to dataGenerator.getEmployeeName(i),
                AGE to dataGenerator.getEmployeeAge(i),
                HIRED to dataGenerator.getHiredBool(i)
        )))
    }
    db.inBatch {
        list.forEach { db.save(it) }
    }
}

private fun deleteObjects() {
    val query = QueryBuilder.select(SelectResult.expression(Meta.id))
            .from(DataSource.database(db))
    val results = query.execute()
    for (result in results) {
        val id = result.getString(0)
        db.getDocument(id)?.let {
            db.delete(it)
        }
    }
}

These are the two crash logs:

E/libc++abi: terminating with uncaught exception of type St9bad_alloc: std::bad_alloc
A/libc: Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 5197 (BenchmarkRunner), pid 5176 (.benchmark.test)
A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
A/DEBUG: Build fingerprint: 'google/coral/coral:11/RPB2.200611.012/6677315:user/release-keys'
A/DEBUG: Revision: 'MP1.0'
A/DEBUG: ABI: 'arm64'
A/DEBUG: Timestamp: 2020-07-29 17:35:57-0600
A/DEBUG: pid: 5176, tid: 5197, name: BenchmarkRunner  >>> io.realm.benchmark.test <<<
A/DEBUG: uid: 10560
A/DEBUG: signal 6 (SIGABRT), code -1 (SI_QUEUE), fault addr --------
A/DEBUG: Abort message: 'terminating with uncaught exception of type St9bad_alloc: std::bad_alloc'
A/DEBUG:     x0  0000000000000000  x1  000000000000144d  x2  0000000000000006  x3  0000007722278020
A/DEBUG:     x4  fefefefefefefeff  x5  fefefefefefefeff  x6  fefefefefefefeff  x7  7f7f7f7f7f7f7f7f
A/DEBUG:     x8  00000000000000f0  x9  9d4b7cecfdd9c274  x10 0000000000000000  x11 ffffffc0fffffbdf
A/DEBUG:     x12 0000000000000001  x13 00000a9c01ede89d  x14 0004b854489b1cad  x15 00000000116bc15c
A/DEBUG:     x16 0000007a1d74dc80  x17 0000007a1d72f230  x18 0000007721c36000  x19 0000000000001438
A/DEBUG:     x20 000000000000144d  x21 00000000ffffffff  x22 0000007a1d750f28  x23 0000007722278190
A/DEBUG:     x24 0000007722278150  x25 00000000166353d0  x26 0000000000000000  x27 000000772227f000
A/DEBUG:     x28 0000000000000043  x29 00000077222780a0
A/DEBUG:     lr  0000007a1d6e2da0  sp  0000007722278000  pc  0000007a1d6e2dcc  pst 0000000000000000
A/DEBUG: backtrace:
A/DEBUG:       #00 pc 000000000004ddcc  /apex/com.android.runtime/lib64/bionic/libc.so (abort+164) (BuildId: 59204a187019804c969948db46cb393a)
A/DEBUG:       #01 pc 000000000004b10c  /system/lib64/libc++.so (abort_message+248) (BuildId: c70d7498491a09dc9af7e1abb723497e)
A/DEBUG:       #02 pc 000000000004b2d0  /system/lib64/libc++.so (demangling_terminate_handler()+212) (BuildId: c70d7498491a09dc9af7e1abb723497e)
A/DEBUG:       #03 pc 000000000004bdc4  /system/lib64/libc++.so (std::__terminate(void (*)())+12) (BuildId: c70d7498491a09dc9af7e1abb723497e)
A/DEBUG:       #04 pc 000000000004b4e0  /system/lib64/libc++.so (__cxxabiv1::failed_throw(__cxxabiv1::__cxa_exception*)+28) (BuildId: c70d7498491a09dc9af7e1abb723497e)
A/DEBUG:       #05 pc 000000000004b448  /system/lib64/libc++.so (__cxa_throw+112) (BuildId: c70d7498491a09dc9af7e1abb723497e)
A/DEBUG:       #06 pc 000000000004ebb4  /system/lib64/libc++.so (operator new(unsigned long)+96) (BuildId: c70d7498491a09dc9af7e1abb723497e)
A/DEBUG:       #07 pc 000000000059febc  /apex/com.android.art/lib64/libart.so (_jobject* art::Thread::CreateInternalStackTrace<false>(art::ScopedObjectAccessAlreadyRunnable const&) const+56) (BuildId: 73638a3e2fcf5ba85c88424926d725cb)
A/DEBUG:       #08 pc 00000000004c5c88  /apex/com.android.art/lib64/libart.so (art::Throwable_nativeFillInStackTrace(_JNIEnv*, _jclass*)+48) (BuildId: 73638a3e2fcf5ba85c88424926d725cb)
A/DEBUG:       #09 pc 0000000000088210  /apex/com.android.art/javalib/arm64/boot.oat (art_jni_trampoline+144) (BuildId: 18cb61f1f9e3337a6277b77a4573b0b40873dd06)
A/DEBUG:       #10 pc 000000000015e018  /apex/com.android.art/javalib/arm64/boot.oat (java.lang.Throwable.fillInStackTrace+88) (BuildId: 18cb61f1f9e3337a6277b77a4573b0b40873dd06)
A/DEBUG:       #11 pc 0000000002033c94  /memfd:jit-cache (deleted) (offset 0x2000000) (com.couchbase.lite.LiteCoreException.throwException+180)
A/DEBUG:       #12 pc 00000000001337e8  /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+568) (BuildId: 73638a3e2fcf5ba85c88424926d725cb)
A/DEBUG:       #13 pc 00000000001a8a94  /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+228) (BuildId: 73638a3e2fcf5ba85c88424926d725cb)
A/DEBUG:       #14 pc 0000000000552dd4  /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeWithVarArgs<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, std::__va_list)+448) (BuildId: 73638a3e2fcf5ba85c88424926d725cb)
A/DEBUG:       #15 pc 0000000000553288  /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeWithVarArgs<_jmethodID*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, std::__va_list)+92) (BuildId: 73638a3e2fcf5ba85c88424926d725cb)
A/DEBUG:       #16 pc 00000000003d0374  /apex/com.android.art/lib64/libart.so (art::JNI<false>::CallStaticVoidMethodV(_JNIEnv*, _jclass*, _jmethodID*, std::__va_list)+656) (BuildId: 73638a3e2fcf5ba85c88424926d725cb)
A/DEBUG:       #17 pc 0000000000128720  /data/app/~~SmCj7FXlpKgfDff6SH1tMg==/io.realm.benchmark.test-VfsN0ro4SQIrqNITUiGWag==/lib/arm64/libLiteCoreJNI.so (_JNIEnv::CallStaticVoidMethod(_jclass*, _jmethodID*, ...)+116) (BuildId: d3d24b6aecef3c236dc9f0a93bb3d61ff70c53be)
A/DEBUG:       #18 pc 000000000012a254  /data/app/~~SmCj7FXlpKgfDff6SH1tMg==/io.realm.benchmark.test-VfsN0ro4SQIrqNITUiGWag==/lib/arm64/libLiteCoreJNI.so (Java_com_couchbase_lite_internal_core_C4Document_get+104) (BuildId: d3d24b6aecef3c236dc9f0a93bb3d61ff70c53be)
A/DEBUG:       #19 pc 00000000000160ac  /data/app/~~SmCj7FXlpKgfDff6SH1tMg==/io.realm.benchmark.test-VfsN0ro4SQIrqNITUiGWag==/oat/arm64/base.odex (art_jni_trampoline+188)
A/DEBUG:       #20 pc 0000000002008824  /memfd:jit-cache (deleted) (offset 0x2000000) (com.couchbase.lite.internal.core.C4Database.get+100)
A/DEBUG:       #21 pc 0000000002001eb0  /memfd:jit-cache (deleted) (offset 0x2000000) (com.couchbase.lite.Document.<init>+256)
A/DEBUG:       #22 pc 00000000020080d8  /memfd:jit-cache (deleted) (offset 0x2000000) (com.couchbase.lite.AbstractDatabase.getDocument+184)
A/DEBUG:       #23 pc 000000000201310c  /memfd:jit-cache (deleted) (offset 0x2000000) (io.realm.benchmark.CouchbaseBenchmarks.deleteObjects+1628)
A/DEBUG:       #24 pc 000000000201a5d8  /memfd:jit-cache (deleted) (offset 0x2000000) (io.realm.benchmark.CouchbaseBenchmarks.simpleQuery+3960)
...
E/libc++abi: terminating with uncaught exception of type St9bad_alloc: std::bad_alloc
A/libc: Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 28340 (BenchmarkRunner), pid 28313 (.benchmark.test)
A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
A/DEBUG: Build fingerprint: 'google/coral/coral:11/RPB2.200611.012/6677315:user/release-keys'
A/DEBUG: Revision: 'MP1.0'
A/DEBUG: ABI: 'arm64'
A/DEBUG: Timestamp: 2020-07-29 05:09:24-0600
A/DEBUG: pid: 28313, tid: 28340, name: BenchmarkRunner  >>> io.realm.benchmark.test <<<
A/DEBUG: uid: 10555
A/DEBUG: signal 6 (SIGABRT), code -1 (SI_QUEUE), fault addr --------
A/DEBUG: Abort message: 'terminating with uncaught exception of type St9bad_alloc: std::bad_alloc'
A/DEBUG:     x0  0000000000000000  x1  0000000000006eb4  x2  0000000000000006  x3  000000772219de70
A/DEBUG:     x4  fefefefefefefeff  x5  fefefefefefefeff  x6  fefefefefefefeff  x7  7f7f7f7f7f7f7f7f
A/DEBUG:     x8  00000000000000f0  x9  9d4b7cecfdd9c274  x10 0000000000000000  x11 ffffffc0fffffbdf
A/DEBUG:     x12 0000000000000001  x13 000009d3c4283c9d  x14 0032f218addce43c  x15 00000000100c8842
A/DEBUG:     x16 0000007a1d74dc80  x17 0000007a1d72f230  x18 0000007721886000  x19 0000000000006e99
A/DEBUG:     x20 0000000000006eb4  x21 00000000ffffffff  x22 0000007a1d750f28  x23 000000772219dfe0
A/DEBUG:     x24 000000772219dfa0  x25 00000077221a5000  x26 000000000000000b  x27 0000000000000002
A/DEBUG:     x28 0000000000000000  x29 000000772219def0
A/DEBUG:     lr  0000007a1d6e2da0  sp  000000772219de50  pc  0000007a1d6e2dcc  pst 0000000000000000
A/DEBUG: backtrace:
A/DEBUG:       #00 pc 000000000004ddcc  /apex/com.android.runtime/lib64/bionic/libc.so (abort+164) (BuildId: 59204a187019804c969948db46cb393a)
A/DEBUG:       #01 pc 000000000004b10c  /system/lib64/libc++.so (abort_message+248) (BuildId: c70d7498491a09dc9af7e1abb723497e)
A/DEBUG:       #02 pc 000000000004b2d0  /system/lib64/libc++.so (demangling_terminate_handler()+212) (BuildId: c70d7498491a09dc9af7e1abb723497e)
A/DEBUG:       #03 pc 000000000004bdc4  /system/lib64/libc++.so (std::__terminate(void (*)())+12) (BuildId: c70d7498491a09dc9af7e1abb723497e)
A/DEBUG:       #04 pc 000000000004b4e0  /system/lib64/libc++.so (__cxxabiv1::failed_throw(__cxxabiv1::__cxa_exception*)+28) (BuildId: c70d7498491a09dc9af7e1abb723497e)
A/DEBUG:       #05 pc 000000000004b448  /system/lib64/libc++.so (__cxa_throw+112) (BuildId: c70d7498491a09dc9af7e1abb723497e)
A/DEBUG:       #06 pc 000000000004ebb4  /system/lib64/libc++.so (operator new(unsigned long)+96) (BuildId: c70d7498491a09dc9af7e1abb723497e)
A/DEBUG:       #07 pc 000000000059febc  /apex/com.android.art/lib64/libart.so (_jobject* art::Thread::CreateInternalStackTrace<false>(art::ScopedObjectAccessAlreadyRunnable const&) const+56) (BuildId: 73638a3e2fcf5ba85c88424926d725cb)
A/DEBUG:       #08 pc 00000000004c5c88  /apex/com.android.art/lib64/libart.so (art::Throwable_nativeFillInStackTrace(_JNIEnv*, _jclass*)+48) (BuildId: 73638a3e2fcf5ba85c88424926d725cb)
A/DEBUG:       #09 pc 0000000000088210  /apex/com.android.art/javalib/arm64/boot.oat (art_jni_trampoline+144) (BuildId: 18cb61f1f9e3337a6277b77a4573b0b40873dd06)
A/DEBUG:       #10 pc 000000000015e018  /apex/com.android.art/javalib/arm64/boot.oat (java.lang.Throwable.fillInStackTrace+88) (BuildId: 18cb61f1f9e3337a6277b77a4573b0b40873dd06)
A/DEBUG:       #11 pc 00000000001f24c0  /apex/com.android.art/javalib/arm64/boot.oat (java.lang.Error.<init> [DEDUPED]+144) (BuildId: 18cb61f1f9e3337a6277b77a4573b0b40873dd06)
A/DEBUG:       #12 pc 0000000000133564  /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548) (BuildId: 73638a3e2fcf5ba85c88424926d725cb)
A/DEBUG:       #13 pc 00000000001a8a78  /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200) (BuildId: 73638a3e2fcf5ba85c88424926d725cb)
A/DEBUG:       #14 pc 0000000000318248  /apex/com.android.art/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+376) (BuildId: 73638a3e2fcf5ba85c88424926d725cb)
A/DEBUG:       #15 pc 000000000030e574  /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+996) (BuildId: 73638a3e2fcf5ba85c88424926d725cb)
A/DEBUG:       #16 pc 000000000067d7c4  /apex/com.android.art/lib64/libart.so (MterpInvokeDirect+576) (BuildId: 73638a3e2fcf5ba85c88424926d725cb)
A/DEBUG:       #17 pc 000000000012d914  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_direct+20) (BuildId: 73638a3e2fcf5ba85c88424926d725cb)
A/DEBUG:       #18 pc 00000000000afa48  [anon:dalvik-classes.dex extracted in memory from /data/app/~~_EQhXdMa5MuSMPuKq2cGQw==/io.realm.benchmark.test-74KDmX9A7pSkji-dzsXqoQ==/base.apk] (com.couchbase.lite.LiteCoreException.<init>)
A/DEBUG:       #19 pc 000000000067da64  /apex/com.android.art/lib64/libart.so (MterpInvokeDirect+1248) (BuildId: 73638a3e2fcf5ba85c88424926d725cb)
A/DEBUG:       #20 pc 000000000012d914  /apex/com.android.art/lib64/libart.so (mterp_op_invoke_direct+20) (BuildId: 73638a3e2fcf5ba85c88424926d725cb)
A/DEBUG:       #21 pc 00000000000afa6c  [anon:dalvik-classes.dex extracted in memory from /data/app/~~_EQhXdMa5MuSMPuKq2cGQw==/io.realm.benchmark.test-74KDmX9A7pSkji-dzsXqoQ==/base.apk] (com.couchbase.lite.LiteCoreException.throwException+4)
A/DEBUG:       #22 pc 0000000000305b70  /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.6412346068224211370)+268) (BuildId: 73638a3e2fcf5ba85c88424926d725cb)
A/DEBUG:       #23 pc 0000000000669e50  /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+780) (BuildId: 73638a3e2fcf5ba85c88424926d725cb)
A/DEBUG:       #24 pc 000000000013cff8  /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88) (BuildId: 73638a3e2fcf5ba85c88424926d725cb)
A/DEBUG:       #25 pc 00000000001337e8  /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+568) (BuildId: 73638a3e2fcf5ba85c88424926d725cb)
A/DEBUG:       #26 pc 00000000001a8a94  /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+228) (BuildId: 73638a3e2fcf5ba85c88424926d725cb)
A/DEBUG:       #27 pc 0000000000552dd4  /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeWithVarArgs<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, std::__va_list)+448) (BuildId: 73638a3e2fcf5ba85c88424926d725cb)
A/DEBUG:       #28 pc 0000000000553288  /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeWithVarArgs<_jmethodID*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, std::__va_list)+92) (BuildId: 73638a3e2fcf5ba85c88424926d725cb)
A/DEBUG:       #29 pc 00000000003d0374  /apex/com.android.art/lib64/libart.so (art::JNI<false>::CallStaticVoidMethodV(_JNIEnv*, _jclass*, _jmethodID*, std::__va_list)+656) (BuildId: 73638a3e2fcf5ba85c88424926d725cb)
A/DEBUG:       #30 pc 0000000000128720  /data/app/~~_EQhXdMa5MuSMPuKq2cGQw==/io.realm.benchmark.test-74KDmX9A7pSkji-dzsXqoQ==/lib/arm64/libLiteCoreJNI.so (_JNIEnv::CallStaticVoidMethod(_jclass*, _jmethodID*, ...)+116) (BuildId: d3d24b6aecef3c236dc9f0a93bb3d61ff70c53be)
A/DEBUG:       #31 pc 000000000012b2d8  /data/app/~~_EQhXdMa5MuSMPuKq2cGQw==/io.realm.benchmark.test-74KDmX9A7pSkji-dzsXqoQ==/lib/arm64/libLiteCoreJNI.so (Java_com_couchbase_lite_internal_core_C4Document_create2+132) (BuildId: d3d24b6aecef3c236dc9f0a93bb3d61ff70c53be)
A/DEBUG:       #32 pc 00000000020255d4  /memfd:jit-cache (deleted) (offset 0x2000000) (art_jni_trampoline+196)
A/DEBUG:       #33 pc 000000000201bb6c  /memfd:jit-cache (deleted) (offset 0x2000000) (com.couchbase.lite.internal.core.C4Database.create+140)
A/DEBUG:       #34 pc 0000000002000574  /memfd:jit-cache (deleted) (offset 0x2000000) (com.couchbase.lite.AbstractDatabase.saveInTransaction+420)
A/DEBUG:       #35 pc 0000000002000a6c  /memfd:jit-cache (deleted) (offset 0x2000000) (com.couchbase.lite.AbstractDatabase.saveInternal+380)
A/DEBUG:       #36 pc 0000000002003ce8  /memfd:jit-cache (deleted) (offset 0x2000000) (com.couchbase.lite.AbstractDatabase.save+72)
A/DEBUG:       #37 pc 0000000002009a4c  /memfd:jit-cache (deleted) (offset 0x2000000) (io.realm.benchmark.CouchbaseBenchmarks$addObjects$1.run+332)
A/DEBUG:       #38 pc 0000000002005bfc  /memfd:jit-cache (deleted) (offset 0x2000000) (com.couchbase.lite.AbstractDatabase.inBatch+188)
A/DEBUG:       #39 pc 000000000200d1f4  /memfd:jit-cache (deleted) (offset 0x2000000) (io.realm.benchmark.CouchbaseBenchmarks.addObjects+1908)
A/DEBUG:       #40 pc 0000000002025248  /memfd:jit-cache (deleted) (offset 0x2000000) (io.realm.benchmark.CouchbaseBenchmarks.access$addObjects+40)
...

I cut off the bottom portion of the logs, but could provide them if helpful. It’s mostly just the JUnit benchmark instrumentation test runner. Tests were run on a Pixel 4 XL phone with couchbase-lite-android-ee v2.7.1.

I also posted as an issue in the GitHub repo, which has more links (only let me post 2 here as a new user).

1 post - 1 participant

Read full topic


Viewing all articles
Browse latest Browse all 1122

Latest Images

Trending Articles



Latest Images