3.8.1android工程打开游戏执行eglGetDisplay时闪退

  • Creator 版本:3.8.1
  • 目标平台:android
  • 重现方式:打开游戏就闪退
  • 首个报错: Fatal signal 4 (SIGILL), code 1, fault addr 0x7f899a06bc in tid 3271 (Thread-2823)
  • 之前哪个版本是正常的:无
  • 手机型号:OPPO A57
  • 手机浏览器:
  • 编辑器操作系统:
  • 重现概率:必现

目前只有oppo a57手机上面发现原生app打开的时候会闪退 闪退的代码是在EGL_CHECK(eglDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY)); 这一行

{20d9bc03-612b-48d2-84a2-61a532d4fa14}

具体堆栈
A Fatal signal 4 (SIGILL), code 1, fault addr 0x7f899a06bc in tid 3271 (Thread-2823)
I finishPostLayoutPolicyLw (statusbar != null ) true topIsFullscreen true top = Window{f770737 u0 Starting com.test.test2}
I topIsFullscreen fullscreen true
E Performed 6 layouts in a row. Skipping
I Screen frozen for +477ms due to Window{f770737 u0 Starting com.test.test2}
A *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
A Build fingerprint: ‘OPPO/A57/A57:6.0.1/MMB29M/1527754036:user/release-keys’
A Revision: ‘0’
A ABI: ‘arm64’
A pid: 3250, tid: 3271, name: Thread-2823 >>> com.test.test2 <<<
A signal 4 (SIGILL), code 1 (ILL_ILLOPC), fault addr 0x7f899a06bc
A x0 0000000000000000 x1 0000007fa4eb9040 x2 0000000000004001 x3 0000007f9fc3f440
A x4 0000000000000000 x5 0000000000004001 x6 0000000000000000 x7 0000007fa4eb9044
A x8 0000007f899a06bc x9 0000007f8c6b3000 x10 0000007fa4eb9044 x11 0000000000004000
A x12 0000000000004001 x13 0000000000000000 x14 0000000000000001 x15 0000000000000001
A x16 0000007f8c656380 x17 0000007f8a488b20 x18 0000000000000000 x19 0000007f9fc3f440
A x20 0000007f9fc3f4c0 x21 0000007fa4a8c000 x22 0000007fa4ebb088 x23 00000000000ff000
A x24 0000000000000058 x25 0000007f9fc65000 x26 0000007fa4a1b000 x27 0000007f9fc727a0
A x28 0000000000001000 x29 0000007f9fc3e340 x30 0000007f8a4cfb6c
A sp 0000007f9fc3df10 pc 0000007f899a06bc pstate 0000000080000000
A
backtrace:
A #00 pc 0000000000fcf6bc /data/app/com.test.test2-1/lib/arm64/libcocos.so
A #01 pc 0000000001afeb68 /data/app/com.test.test2-1/lib/arm64/libcocos.so (_ZN2cc3gfx15GLES3GPUContext10initializeEPNS0_18GLES3GPUStateCacheEPNS0_24GLES3GPUConstantRegistryE+112)
A #02 pc 0000000001aa5b04 /data/app/com.test.test2-1/lib/arm64/libcocos.so (_ZN2cc3gfx11GLES3Device6doInitERKNS0_10DeviceInfoE+660)
A #03 pc 0000000001a0ee28 /data/app/com.test.test2-1/lib/arm64/libcocos.so (_ZN2cc3gfx6Device10initializeERKNS0_10DeviceInfoE+56)
A #04 pc 0000000001a1e3a8 /data/app/com.test.test2-1/lib/arm64/libcocos.so (_ZN2cc3gfx11DeviceAgent6doInitERKNS0_10DeviceInfoE+60)
A #05 pc 0000000001a0ee28 /data/app/com.test.test2-1/lib/arm64/libcocos.so (_ZN2cc3gfx6Device10initializeERKNS0_10DeviceInfoE+56)
A #06 pc 0000000001a5bbf4 /data/app/com.test.test2-1/lib/arm64/libcocos.so (_ZN2cc3gfx15DeviceValidator6doInitERKNS0_10DeviceInfoE+556)
A #07 pc 0000000001a0ee28 /data/app/com.test.test2-1/lib/arm64/libcocos.so (_ZN2cc3gfx6Device10initializeERKNS0_10DeviceInfoE+56)
A #08 pc 00000000018ef44c /data/app/com.test.test2-1/lib/arm64/libcocos.so (_ZN2cc3gfx13DeviceManager9tryCreateINS0_11GLES3DeviceEvEEbRKNS0_10DeviceInfoEPPNS0_6DeviceE+448)
A #09 pc 00000000018ee414 /data/app/com.test.test2-1/lib/arm64/libcocos.so (_ZN2cc3gfx13DeviceManager6createERKNS0_10DeviceInfoE+116)
A #10 pc 00000000018ebc18 /data/app/com.test.test2-1/lib/arm64/libcocos.so (_ZN2cc3gfx13DeviceManager6createEv+48)
A #11 pc 00000000018eb774 /data/app/com.test.test2-1/lib/arm64/libcocos.so (_ZN2cc6Engine4initEv+92)
A #12 pc 00000000018da5a0 /data/app/com.test.test2-1/lib/arm64/libcocos.so (_ZN2cc16CocosApplication4initEv+68)
A #13 pc 00000000018e9c14 /data/app/com.test.test2-1/lib/arm64/libcocos.so (_ZN2cc8BaseGame4initEv+104)
A #14 pc 00000000018cd620 /data/app/com.test.test2-1/lib/arm64/libcocos.so (_ZN4Game4initEv+104)
A #15 pc 00000000018cd710 /data/app/com.test.test2-1/lib/arm64/libcocos.so (_Z10cocos_mainiPPKc+68)
A #16 pc 000000000198fe4c /data/app/com.test.test2-1/lib/arm64/libcocos.so (_ZN2cc14GameInputProxy16handleAppCommandEi+280)
A #17 pc 000000000198e0f8 /data/app/com.test.test2-1/lib/arm64/libcocos.so
A #18 pc 0000000002b0d0b4 /data/app/com.test.test2-1/lib/arm64/libcocos.so
A #19 pc 000000000198f070 /data/app/com.test.test2-1/lib/arm64/libcocos.so (_ZN2cc15AndroidPlatform4loopEv+116)
A #20 pc 000000000198efe8 /data/app/com.test.test2-1/lib/arm64/libcocos.so (_ZN2cc15AndroidPlatform3runEiPPKc+36)
A #21 pc 00000000018d02e4 /data/app/com.test.test2-1/lib/arm64/libcocos.so (android_main+80)
A #22 pc 0000000002b0d04c /data/app/com.test.test2-1/lib/arm64/libcocos.so
A #23 pc 00000000000664a4 /system/lib64/libc.so (_ZL15__pthread_startPv+52)
A #24 pc 000000000001ebc4 /system/lib64/libc.so (__start_thread+16)
A
Tombstone written to: /data/tombstones/tombstone_04
W Force finishing activity com.test.test2/com.cocos.game.AppActivity

发现问题是在打出来的apk包里面包含有libEGL.so库,在OPPO A57手机(安卓版本是6)跑的时候eglGetProcAddress获取的eglGetDisplay地址和用 dlsym(libegl, proc);获取的地址不一样,用eglGetProcAddress获取的地址调用就会闪退,用dlsym获取eglGetDisplay的地址调用就不会闪退但是调用返回的是0 EGL_NO_DISPLAY。
目前的解决方案是把libEGL.so从apk删除就可以了。

1赞

大佬。能分享一下是如何定位这个地方出现问题的吗?
我遇到这问题都不知道从哪去找问题,想学习一下