On my Google Play Console I've got some reports for an application (FYI, it also uses JNI). This is the backtrace:
native: pc 00000000002c0536 /system/lib/libart.so (_ZN3artL16Unsafe_putDoubleEP7_JNIEnvP8_jobjectS3_xd+31)
native: pc 0000000073bb9609 /data/dalvik-cache/arm/system@framework@boot.oat
I am not able to catch it with any crash reporting system (Google Analytics, Crashlytics) and of course have no clue on how to reproduce it.
Interestingly, the devices affected for most are the ones from Motorola Moto G series and mid-aged Samsung Galaxy's.
The problem looks like to be outside from my application but I still would like to know which part of my code causes it so I can try a workaround to make it also work on those devices. Is it possible to spot the problem without having physically the device?
Gradle.build
android {
compileSdkVersion 26
buildToolsVersion '26.0.2'
defaultConfig {
applicationId "com"
minSdkVersion 16
targetSdkVersion 26
versionCode 294
versionName "1.6.268"
vectorDrawables.useSupportLibrary = true
externalNativeBuild {
ndkBuild {
arguments "APP_STL:=gnustl_static"
}
}
}
dexOptions {
javaMaxHeapSize "12g"
jumboMode true
}
applicationVariants.all { variant ->
variant.resValue "string", "versionName", variant.versionName
}
buildTypes {
release {
debuggable false
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.releaseConfig
externalNativeBuild {
ndkBuild {
cFlags "-DDEBUG_MODE=0"
}
}
}
debug {
debuggable true
minifyEnabled false
shrinkResources false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
externalNativeBuild {
ndkBuild {
cFlags "-DDEBUG_MODE=1"
}
}
}
}
externalNativeBuild {
ndkBuild {
path 'src/main/jni/Android.mk'
}
}
return void
}
Gradle version is 2.3.3 and also Android Studio 2.3.3.
Digging inside the old crash report section of Google Play Console, I found that it displays the full native crash data:
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
LineageOS Version: 'unknown'
Build fingerprint: 'samsung/j5lteub/j5lte:6.0.1/MMB29M/J500MUBU1BQH2:user/release-keys'
Revision: '5'
ABI: 'arm'
pid: 10935, tid: 11080, name: glide-source-th >>> com. <<<
signal 7 (SIGBUS), code 2 (BUS_ADRERR), fault addr 0x902d8000
r0 a4b3a670 r1 9385e5ec r2 902d8000 r3 00000000
r4 00000075 r5 70edc0cc r6 902d8000 r7 00000000
r8 00000063 r9 94903f00 sl 0000001b fp 00000075
ip b0052537 sp 9385e5e0 lr 73cc09a3 pc b0052536 cpsr 600d0030
backtrace:
#00 pc 002c0536 /system/lib/libart.so (_ZN3artL16Unsafe_putDoubleEP7_JNIEnvP8_jobjectS3_xd+31)
#01 pc 73cc09a1 /data/dalvik-cache/arm/system@framework@boot.oat (offset 0x283e000)
This would mean that it's not about my own code, not entirely at least, in fact you can see the process name is glide-source-th
, yes, Glide. So much for today, I will keep it updated once I get in touch with Glide support (see GitHub issue).