We have a report of a crash when our App is sent into the background, immediately after the onPause event. From the callstack, I would assume this is during the destruction of the context. The device is a Galaxy S5, Adreno 330 chip. The logcat output is as follows:
F/libc (29341): Fatal signal 11 (SIGSEGV), code 1, fault addr 0x14 in tid 29374 (GLThread 358701)
I/DEBUG (15307): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG (15307): Build fingerprint: 'Verizon/kltevzw/kltevzw:5.0/LRX21T/G900VVRU1BOA8:user/release-keys'
I/DEBUG (15307): Revision: '14'
I/DEBUG (15307): ABI: 'arm'
I/DEBUG (15307): pid: 29341, tid: 29374, name: GLThread 358701 >>> com.company.App <<<
I/DEBUG (15307): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x14
I/DEBUG (15307): r0 ffffffff r1 fffffff4 r2 00000001 r3 b6f51fc4
I/DEBUG (15307): r4 00000000 r5 ffffff28 r6 00000001 r7 b6f45fd8
I/DEBUG (15307): r8 0000000d r9 0000000c sl 00000000 fp a9fa2df1
I/DEBUG (15307): ip 9f8eede8 sp af3ff7a8 lr b6eefa35 pc b6f262ac cpsr 20030030
I/DEBUG (15307):
I/DEBUG (15307): backtrace:
I/DEBUG (15307): #00 pc 000462ac /system/lib/libc.so (ifree+47)
I/DEBUG (15307): #01 pc 0000fa33 /system/lib/libc.so (free+10)
I/DEBUG (15307): #02 pc 0011d873 /system/vendor/lib/libsc-a3xx.so
I/DEBUG (15307): #03 pc 0010b3f5 /system/vendor/lib/libsc-a3xx.so
I/DEBUG (15307): #04 pc 000cd615 /system/vendor/lib/libsc-a3xx.so
I/DEBUG (15307): #05 pc 000cd625 /system/vendor/lib/libsc-a3xx.so
I/DEBUG (15307): #06 pc 000c477d /system/vendor/lib/libsc-a3xx.so
I/DEBUG (15307): #07 pc 000fc1d1 /system/vendor/lib/libsc-a3xx.so (__free_shader_object+56)
I/DEBUG (15307): #08 pc 0006305b /system/vendor/lib/egl/libGLESv2_adreno.so
I/DEBUG (15307): #09 pc 0006308f /system/vendor/lib/egl/libGLESv2_adreno.so (delete_shader_object+22)
I/DEBUG (15307): #10 pc 0005f0f7 /system/vendor/lib/egl/libGLESv2_adreno.so (nobj_decrease_refcount+44)
I/DEBUG (15307): #11 pc 0005fe15 /system/vendor/lib/egl/libGLESv2_adreno.so (delete_program_object+36)
I/DEBUG (15307): #12 pc 0005f135 /system/vendor/lib/egl/libGLESv2_adreno.so (nobj_remove_list+58)
I/DEBUG (15307): #13 pc 0006043d /system/vendor/lib/egl/libGLESv2_adreno.so (delete_program_objects+160)
I/DEBUG (15307): #14 pc 00052dbb /system/vendor/lib/egl/libGLESv2_adreno.so (gl2_context_delete+1254)
I/DEBUG (15307): #15 pc 0001ae08 /system/vendor/lib/egl/libEGL_adreno.so (eglDestroyClientApiContext+60)
I/DEBUG (15307): #16 pc 0001ae68 /system/vendor/lib/egl/libEGL_adreno.so (eglFreeContext+36)
I/DEBUG (15307): #17 pc 0001baf0 /system/vendor/lib/egl/libEGL_adreno.so (eglContextReleaseRef+108)
I/DEBUG (15307): #18 pc 00011644 /system/vendor/lib/egl/libEGL_adreno.so (qeglDrvAPI_eglDestroyContext+348)
I/DEBUG (15307): #19 pc 000077d0 /system/vendor/lib/egl/libEGL_adreno.so (eglDestroyContext+16)
I/DEBUG (15307): #20 pc 000135ab /system/lib/libEGL.so (eglDestroyContext+66)
I/DEBUG (15307): #21 pc 00062b5b /system/lib/libandroid_runtime.so
I/DEBUG (15307): #22 pc 008dbce3 /system/framework/arm/boot.oat
We implement binary shaders in our App, saved from compiled runtime versions. Apparently this crash only happens when *not* using the binary shaders. Since we cache compiled binary shaders when the shaders are used for the first time, this generally only happens when backgrounding the App on the first launch. Subsequent launches load the binary shaders, and work just fine.
Is there some usage of the GLES API that would cause such a crash with this callstack? Perhaps there is some workaround we can implement?
Thanks,
Bart