我使用OpenGL
个共享上下文来处理多个GLSurfaceView
。从一个活动切换到另一个活动后,adreno驱动程序崩溃。但我的应用程序在其他设备上运行良好。此外,如果我用正常上下文替换共享上下文,它也有效。这是驱动程序中的错误吗?
此处的崩溃日志:
11-03 14:03:39.358: A/libc(7900): Fatal signal 11 (SIGSEGV), code 1, fault addr 0x20c in tid 8012 (GLThread 1247)
11-03 14:03:39.460: A/DEBUG(1596): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
11-03 14:03:39.460: A/DEBUG(1596): Build fingerprint: 'google/shamu/shamu:6.0/MRA58K/2256973:user/release-keys'
11-03 14:03:39.460: A/DEBUG(1596): Revision: '0'
11-03 14:03:39.460: A/DEBUG(1596): ABI: 'arm'
11-03 14:03:39.461: A/DEBUG(1596): pid: 7900, tid: 8012, name: GLThread 1247 >>> com.example.app <<<
11-03 14:03:39.461: A/DEBUG(1596): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x20c
11-03 14:03:39.484: A/DEBUG(1596): r0 00000000 r1 27006880 r2 00000032 r3 9c35c000
11-03 14:03:39.484: A/DEBUG(1596): r4 994d1640 r5 9e1c5d40 r6 00000000 r7 00000001
11-03 14:03:39.484: A/DEBUG(1596): r8 9965155c r9 00000000 sl 00000000 fp 9e14b394
11-03 14:03:39.485: A/DEBUG(1596): ip 00000000 sp 9e33f1a0 lr a936efd3 pc a935acd6 cpsr 60010030
11-03 14:03:39.505: A/DEBUG(1596): backtrace:
11-03 14:03:39.505: A/DEBUG(1596): #00 pc 0015dcd6 /system/vendor/lib/egl/libGLESv2_adreno.so (A4xSamplerObject::UpdateRegs()+25)
11-03 14:03:39.505: A/DEBUG(1596): #01 pc 00171fcf /system/vendor/lib/egl/libGLESv2_adreno.so (A4xContext::ValidateTexSamplersCommon(A4xProgram*, int, EsxBitField96*)+490)
11-03 14:03:39.505: A/DEBUG(1596): #02 pc 0017226b /system/vendor/lib/egl/libGLESv2_adreno.so (A4xContext::ValidateTexSamplers()+66)
11-03 14:03:39.506: A/DEBUG(1596): #03 pc 001707e1 /system/vendor/lib/egl/libGLESv2_adreno.so (A4xContext::ValidateState(EsxDrawDescriptor const*)+1596)
11-03 14:03:39.506: A/DEBUG(1596): #04 pc 00170baf /system/vendor/lib/egl/libGLESv2_adreno.so (A4xContext::HwValidateGfxState(EsxDrawDescriptor const*)+6)
11-03 14:03:39.506: A/DEBUG(1596): #05 pc 000e731b /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::ValidateGfxState(EsxDrawDescriptor const*)+470)
11-03 14:03:39.506: A/DEBUG(1596): #06 pc 000dc865 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::DrawElementsInstanced(EsxPrimType, unsigned int, EsxPixType, void const*, unsigned int)+432)
11-03 14:03:39.507: A/DEBUG(1596): #07 pc 000c6ed3 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::GlDrawElements(unsigned int, int, unsigned int, void const*)+54)
11-03 14:03:39.507: A/DEBUG(1596): #08 pc 000bd481 /system/vendor/lib/egl/libGLESv2_adreno.so (glDrawElements+44)
11-03 14:03:39.507: A/DEBUG(1596): #09 pc 000e6e2d /data/app/com.example.app-1/lib/arm/librender.so (Render::quad()+324)
11-03 14:03:39.508: A/DEBUG(1596): #17 pc 016abacd /data/app/com.example.app-1/oat/arm/base.odex (offset 0xa6e000) (boolean com.example.app.common.render.GLRenderer.onDrawFrame(javax.microedition.khronos.opengles.GL10)+88)
11-03 14:03:39.508: A/DEBUG(1596): #18 pc 016a875b /data/app/com.example.app-1/oat/arm/base.odex (offset 0xa6e000) (void com.example.app.common.render.GLSurfaceView$GLThread.guardedRun()+5590)
11-03 14:03:39.508: A/DEBUG(1596): #19 pc 016aa1e9 /data/app/com.example.app-1/oat/arm/base.odex (offset 0xa6e000) (void com.example.app.common.render.GLSurfaceView$GLThread.run()+308)
11-03 14:03:39.509: A/DEBUG(1596): #20 pc 000e6331 /system/lib/libart.so (art_quick_invoke_stub_internal+64)
11-03 14:03:39.509: A/DEBUG(1596): #21 pc 0040254d /system/lib/libart.so (art_quick_invoke_stub+188)
11-03 14:03:39.509: A/DEBUG(1596): #22 pc 00102774 [stack:8012]