androidgoogle-play-consolethreadabortexception

Getting "abort Exception" report from Play Store on MI devices


Getting abort exception on google play console for Xiaomi Mi A1 (tissot_sprout), Android 8.1 and Xiaomi Redmi Note 5 Pro (whyred), Android 8.1 devices only!

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>> com.tc.views <<<

backtrace:
  #00  pc 000000000001de14  /system/lib64/libc.so (abort+104)
  #01  pc 0000000000007f20  /system/lib64/liblog.so (__android_log_assert+304)
  #02  pc 000000000006c318  /system/lib64/libhwui.so (android::uirenderer::renderthread::EglManager::createSurface(ANativeWindow*, bool)+320)
  #03  pc 000000000006a094  /system/lib64/libhwui.so (android::uirenderer::renderthread::OpenGLPipeline::setSurface(android::Surface*, android::uirenderer::renderthread::SwapBehavior, android::uirenderer::renderthread::ColorMode)+76)
  #04  pc 0000000000066e38  /system/lib64/libhwui.so (android::uirenderer::renderthread::CanvasContext::setSurface(android::Surface*)+144)
  #05  pc 000000000006f608  /system/lib64/libhwui.so (android::uirenderer::renderthread::Bridge_initialize(android::uirenderer::renderthread::initializeArgs*)+16)
  #06  pc 0000000000071920  /system/lib64/libhwui.so (android::uirenderer::renderthread::MethodInvokeRenderTask::run()+24)
  #07  pc 0000000000072a8c  /system/lib64/libhwui.so (android::uirenderer::renderthread::RenderThread::threadLoop()+340)
  #08  pc 0000000000011460  /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+280)
  #09  pc 00000000000aab64  /system/lib64/libandroid_runtime.so (android::AndroidRuntime::javaThreadShell(void*)+140)
  #10  pc 0000000000067e10  /system/lib64/libc.so (__pthread_start(void*)+36)
  #11  pc 000000000001f240  /system/lib64/libc.so (__start_thread+68)  

Can anyone help me in understanding this issue?
Is this device specific or issue is in the code? Thanks in advance.


Solution

  • One of the great things about Android is it is open source. Which means you can look at the source code and debug yourself (or at least get some hints).

    I did a Google search for "source android uirenderer eglmanager createsurface" which all came from your stack trace.

    This gave me this result in the createSurface() method of EglManager.

    From this line

    LOG_ALWAYS_FATAL_IF(surface == EGL_NO_SURFACE,
            "Failed to create EGLSurface for window %p, eglErr = %s",
            (void*) window, egl_error_str());
    

    You can see that something is failing to create a surface. Now, I have no idea why this might happen, as I don't know your code, but this might give you a hint. Maybe you a using an OpenGL texture format that those phones don't support?