tgkill - собственная ошибка на Android 8.0 Samsung S8 - PullRequest
0 голосов
/ 16 мая 2018

Недавно я начал получать собственные сбои Android (сообщается в Google Play жизненно важных функций). Они случаются только на телефонах Samsung Galaxy S8 или S8 + с Android 8.

Согласно трассировке стека это связано с потоком рендеринга пользовательского интерфейса. Однако я не знаю, как это исправить или даже где именно в приложении это происходит.

Есть идеи, как узнать, где в приложении это происходит? И почему это касается только Galaxy S8 с Android 8? Спасибо.

backtrace:
  #00  pc 0000000000071854  /system/lib64/libc.so (tgkill+8)
  #01  pc 000000000001e058  /system/lib64/libc.so (abort+88)
  #02  pc 0000000000008248  /system/lib64/liblog.so (__android_log_assert+328)
  #03  pc 0000000000052430  /system/lib64/libhwui.so (_ZN7android10uirenderer12renderthread10EglManager11damageFrameERKNS1_5FrameERK6SkRect+320)
  #04  pc 000000000004f9dc  /system/lib64/libhwui.so (_ZN7android10uirenderer12renderthread14OpenGLPipeline4drawERKNS1_5FrameERK6SkRectS8_RKNS0_12FrameBuilder13LightGeometryEPNS0_16LayerUpdateQueueERKNS0_4RectEbRKNS0_15BakedOpRenderer9LightInfoERKNSt3__16vectorINS_2spINS0_10RenderNodeEEENSM_9allocatorISQ_EEEEPNS0_19FrameInfoVisualizerE+76)
  #05  pc 000000000004d7e0  /system/lib64/libhwui.so (_ZN7android10uirenderer12renderthread13CanvasContext4drawEv+176)
  #06  pc 00000000000511e8  /system/lib64/libhwui.so (_ZN7android10uirenderer12renderthread13DrawFrameTask3runEv+184)
  #07  pc 0000000000058494  /system/lib64/libhwui.so (_ZN7android10uirenderer12renderthread12RenderThread10threadLoopEv+356)
  #08  pc 0000000000011c58  /system/lib64/libutils.so (_ZN7android6Thread11_threadLoopEPv+280)
  #09  pc 00000000000fd688  /system/lib64/libandroid_runtime.so (_ZN7android14AndroidRuntime15javaThreadShellEPv+136)
  #10  pc 000000000006de44  /system/lib64/libc.so (_ZL15__pthread_startPv+36)
  #11  pc 000000000001f9a4  /system/lib64/libc.so (__start_thread+68)

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Анализ Logcat

Здесь происходит сбой вашего кода EglManager.cpp :

void EglManager::damageFrame(const Frame& frame, const SkRect& dirty) {
#ifdef EGL_KHR_partial_update
    if (EglExtensions.setDamage && mSwapBehavior == SwapBehavior::BufferAge) {
        EGLint rects[4];
        frame.map(dirty, rects);
        if (!eglSetDamageRegionKHR(mEglDisplay, frame.mSurface, rects, 1)) {
            LOG_ALWAYS_FATAL("Failed to set damage region on surface %p, error=%s",
                    (void*)frame.mSurface, egl_error_str());
        }
    }
#endif
}

Вызывается из SkiaOpenGLPipeline.cpp :

SkiaOpenGLPipeline::draw //method

mEglManager.damageFrame(frame, dirty);

Почему?

Кажется, у вас может быть 'Failed to set damage region on surface', вероятно, после onResume() из screen rotation или onPause() в вашем Activity.См. fixing-common-android-lifecycle-questions

Исправления

Я начинал получать этот сбой после обновления до Oreo, каждый раз, когда начинал свойapp, с сообщением "Failed to set damage region on surface", за которым следуют все эти строки о libhwui.so и EglManager. И оказалось, что по какой-то неясной причине это было каким-то образом вызвано совершенно не связанной проблемой в моем приложении ( слишком много открытых файлов [забыл закрыть их]).После исправления этой ошибки больше не происходит сбоев на EglManager.[ также обратите внимание, что сбои происходят, только если включено аппаратное ускорение ] Ссылка: issetracker.google.com {Issue 70259031}

См. Также: eglCreateWindowSurface {SO problem} , Ведение журнала , native-аварийные завершения при аварийном завершении в консоли разработчика с oreo-8-1 {SO problem} , аппаратное ускорение , opengl , GLSurfaceView

0 голосов
/ 06 декабря 2018

Эта проблема, по-видимому, ограничена устройствами Samsung с Android 8.0, это некоторая ошибка при выделении текста и / или вводе текста и / или закрытии диалогового окна, содержащего EditTexts и / или поворот экрана.

Кажется, что есть обходной путь. Создайте XML-файл в папке res / drawable, определяя пустую фигуру, следующим образом.

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<!-- nothing -->
</shape>

В файле макета добавьте следующие атрибуты в EditTexts:

android:textSelectHandle="@drawable/empty"
android:textSelectHandleRight="@drawable/empty"
android:textSelectHandleLeft="@drawable/empty"

источник: Сбой форума разработчиков Samsung Samsung Galaxy S8 libhwui.so

...