在解决问题后,我在Google Play开发者控制台上看到了崩溃报告,此崩溃是我最常发生的崩溃:
信号7(SIGBUS),代码1(BUS_ADRALN)
#01 pc 0000000000015580 /system/lib64/libandroid.so(ANativeWindow_setBuffersGeometry + 40)
这种情况很少见,但是由于应用安装量大(每月50万次),每天确实有几次被点击。
我在64位ARM和32位ARM上看到它。
我在其上看到的客户设备:
这是Samsung驱动程序错误,还是什么?我在代码中找不到任何可疑的东西,并彻底检查了EGL中的所有错误。
崩溃的应用程序代码行:
eglGetConfigAttrib( display, config, EGL_NATIVE_VISUAL_ID, &format );
CHECKEGLV( eglGetConfigAttrib )
const int32_t setbuffers_result = ANativeWindow_setBuffersGeometry( engine->app->window, 0, 0, format );
我选择的EGL配置无异国情调:
const EGLint attribs[] = {
EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
EGL_DEPTH_SIZE, 16,
EGL_BLUE_SIZE, 8,
EGL_GREEN_SIZE, 8,
EGL_RED_SIZE, 8,
EGL_NONE
};
找到匹配的配置,没有问题。
前面对 eglInitialize(), eglChooseConfig()和 eglGetConfigAttrib()的调用均成功无误。