I had a production APK in the Play store, which was using a third party native library. I had 3 architectures in the jniLibs directory, namely armeabi, armeabi-v7a and x86.
I recently updated the build and removed the library using the native code (as I don't need that anymore). However, to my surprise, I observed random crashes on 64 bit devices, immediately after updating the application.
Following are the primary devices affected:
- All 64 bit devices running Android 6.0 (Marshmallow) - Nexus 5X, Nexus 6P, HTC One M9, LG G4, Moto X Pure Edition
- Samsung Galaxy S6 series running Android 5.1 (Lollipop)
And here is the crash trace on Android 6.0:
Build fingerprint: 'htc/himauhl_htc_europe/htc_himauhl:6.0/MRA58K/671758.12:user/release-keys'
Revision: '0'
ABI: 'arm64'
pid: 23807, tid: 23971, name: Chrome_InProcGp >>> com.my.app <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x5594d38d40
x0 0000005594534d40 x1 0000005594535710 x2 0000000000000000 x3 0000000000002460
x4 00000055945371a0 x5 0000000000804000 x6 0000000000000000 x7 0000007f3ff19e58
x8 0000000000000000 x9 0000005594534db0 x10 0000008400804000 x11 0000000000804000
x12 0000005594d38d40 x13 0000000000000130 x14 0000000000000000 x15 00000000000009d0
x16 0000007f750f34a8 x17 0000007f74d386e4 x18 0000007f3ff19e58 x19 0000000000000a48
x20 0000005593d7eaa0 x21 0000000000000001 x22 0000005594534d40 x23 0000000000000001
x24 0000000000000000 x25 00000000000007b4 x26 00000000000009d0 x27 0000007f74f1ecb8
x28 0000005594535710 x29 0000007f3ff19ab0 x30 0000007f74d38de0
sp 0000007f3ff19aa0 pc 0000007f74d38734 pstate 0000000060000000
backtrace:
#00 pc 0000000000cef734 /system/vendor/lib64/libllvm-glnext.so (ShaderObjects::adjustSymbolPointers(char*, GLSL_SYMBOL*)+80)
#01 pc 0000000000cefddc /system/vendor/lib64/libllvm-glnext.so (ShaderObjects::loadProgramBinary(CompilerContext*, void*, unsigned long, QGLC_LINKPROGRAM_RESULT*)+812)
#02 pc 0000000000c71e3c /system/vendor/lib64/libllvm-glnext.so (CompilerContext::loadProgramBinary(void*, unsigned long, QGLC_LINKPROGRAM_RESULT*)+176)
#03 pc 0000000000d05868 /system/vendor/lib64/libllvm-glnext.so (QGLCLoadProgramBinary(void*, void*, unsigned long, QGLC_LINKPROGRAM_RESULT*)+68)
#04 pc 00000000001a4af0 /system/vendor/lib64/egl/libGLESv2_adreno.so (EsxShaderCompiler::LoadProgramBinaryBlob(EsxContext*, EsxProgram*, void const*, unsigned long, EsxInfoLog*)+144)
#05 pc 000000000018d104 /system/vendor/lib64/egl/libGLESv2_adreno.so (EsxProgram::LoadProgramBinary(EsxContext*, unsigned int, void const*, int)+164)
#06 pc 000000000012e608 /system/vendor/lib64/egl/libGLESv2_adreno.so (EsxContext::GlProgramBinary(unsigned int, unsigned int, void const*, int)+136)
#07 pc 0000000000111a44 /system/vendor/lib64/egl/libGLESv2_adreno.so (glProgramBinary+68)
#08 pc 00000000008372b4 /data/app/com.google.android.webview-1/lib/arm64/libwebviewchromium.so
And here is the crash trace on Samsung S6 devices (Android 5.1)
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'samsung/zerofltexx/zeroflte:5.1.1/LMY47X/G920FXXU3COI9:user/release-keys'
Revision: '11'
ABI: 'arm64'
pid: 19133, tid: 19323, name: AsyncTask #8 >>> com.my.app <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x1c
x0 0000000033441be0 x1 0000000000668837 x2 0000000000000068 x3 0000000000000006
x4 0000000032d694c0 x5 0000000002cf95e0 x6 0000000033441be0 x7 0000007f831c8800
x8 00000000711c5508 x9 0000000000000000 x10 0000000033441be0 x11 0000007f831c8610
x12 0000000000000002 x13 00000000033263c0 x14 0000000002cf95e0 x15 0000000033441008
x16 000000003fffffff x17 000000000000005d x18 0000007f2fcaf000 x19 000000000000005f
x20 0000000033441be0 x21 0000000000000000 x22 0000000000000003 x23 0000000033441ac0
x24 000000008a00af80 x25 0000000033441ba0 x26 0000000033441b20 x27 0000000033441b40
x28 0000000033441b60 x29 0000000000000001 x30 0000007f72beb9ac
sp 0000007f623ff450 pc 0000007f72beb9b0 pstate 0000000020000000
backtrace:
#00 pc 00000000002e89b0 /data/dalvik-cache/arm64/data@app@com.my.app-2@base.apk@classes.dex
#01 pc 00000000002e89a8 /data/dalvik-cache/arm64/data@app@com.my.app-2@base.apk@classes.dex
What could be the issue and how to rectify this?