导致SIGBUS(BUS_ADRALN)的ANativeWindow_setBuffersGeometry

时间:2019-07-29 18:14:15

标签: android android-ndk samsung-mobile egl

在解决问题后,我在Google Play开发者控制台上看到了崩溃报告,此崩溃是我最常发生的崩溃:

信号7(SIGBUS),代码1(BUS_ADRALN)

#01 pc 0000000000015580 /system/lib64/libandroid.so(ANativeWindow_setBuffersGeometry + 40)

这种情况很少见,但是由于应用安装量大(每月50万次),每天确实有几次被点击。

我在64位ARM和32位ARM上看到它。

我在其上看到的客户设备:

  • 三星Galaxy A20
  • 三星Galaxy Note8
  • 三星Galaxy J7 Prime
  • 三星Galaxy J4 +

这是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()的调用均成功无误。

0 个答案:

没有答案