Что могло вызвать зависание моего кода?(приложение работает на индивидуальной сборке Samsung) ANR включен - PullRequest
0 голосов
/ 26 марта 2019

Моя анимация с использованием Canvas зависает в течение определенного периода времени (от 10 до 36 часов) во время воспроизведения. Похоже, что вся система просто замерзла, если вы подключите ее к ПК или ноутбуку с помощью USB-кабеля, ничего не будет видно за пределами «неопознанного устройства». Мы могли только перезагрузить систему, чтобы «решить» замораживание.

Мне удалось вытащить оба файла traces.txt из папки data / anr /, но, к сожалению, я не настолько образован, чтобы читать оба из них, но поскольку обе программы зависают в одном и том же разделе кода, я думаю, это скорее моя программа, чем все остальное.

Система, на которой работает мое приложение, настроена Samsung. Если это звучит странно, я полагаю, что это может быть потому, что Samsung выпустила определенный SDK для своих чипов, и наш поставщик использовал его. Чип Samsung 4418. Сборка особенная, так как она частично включает в себя графическую часть и часть драйвера дисплея AOSP 5.1.1, а остальная часть кода AOSP использует версию 4.4.2 - так что версия сборки - 4.4.2 API lvl 19.

Ниже приведены следы "main" для обоих замораживаний:

Первый раз:



----- pid 12021 at 2019-03-19 22:05:10 -----
Cmd line: com.tsl.touch.navigator

JNI: CheckJNI is off; workarounds are off; pins=0; globals=264

DALVIK THREADS:
(mutexes: tll=0 tsl=0 tscl=0 ghl=0)

"main" prio=5 tid=1 NATIVE
  | group="main" sCount=1 dsCount=0 obj=0x2c3c6ca8 self=0x2c3b53c0
  | sysTid=12021 nice=0 sched=0/0 cgrp=apps handle=716837204
  | state=R schedstat=( 57574000000 93000000 1899 ) utm=5637 stm=120 core=1
  #00  pc 00012224  /system/lib/libpng.so
  #01  pc 000078bf  /system/lib/libpng.so (png_read_row+678)
  #02  pc 000079ff  /system/lib/libpng.so (png_read_rows+46)
  #03  pc 000eecc1  /system/lib/libskia.so (SkPNGImageDecoder::onDecode(SkStream*, SkBitmap*, SkImageDecoder::Mode)+546)
  #04  pc 000eb0e1  /system/lib/libskia.so (SkImageDecoder::decode(SkStream*, SkBitmap*, SkBitmap::Config, SkImageDecoder::Mode)+36)
  #05  pc 00075201  /system/lib/libandroid_runtime.so
  #06  pc 00075375  /system/lib/libandroid_runtime.so
  #07  pc 0001dbcc  /system/lib/libdvm.so (dvmPlatformInvoke+112)
  #08  pc 0004e123  /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+398)
  #09  pc 00026fe0  /system/lib/libdvm.so
  #10  pc 0002dfa0  /system/lib/libdvm.so (dvmMterpStd(Thread*)+76)
  #11  pc 0002b638  /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
  #12  pc 00060865  /system/lib/libdvm.so (dvmInvokeMethod(Object*, Method const*, ArrayObject*, ArrayObject*, ClassObject*, bool)+392)
  #13  pc 000687c7  /system/lib/libdvm.so
  #14  pc 00026fe0  /system/lib/libdvm.so
  #15  pc 0002dfa0  /system/lib/libdvm.so (dvmMterpStd(Thread*)+76)
  #16  pc 0002b638  /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
  #17  pc 00060581  /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+336)
  #18  pc 00049d0b  /system/lib/libdvm.so
  #19  pc 0004cde7  /system/lib/libandroid_runtime.so
  #20  pc 0004db0b  /system/lib/libandroid_runtime.so (android::AndroidRuntime::start(char const*, char const*)+354)
  #21  pc 0000105b  /system/bin/app_process
  #22  pc 0000e403  /system/lib/libc.so (__libc_init+50)
  #23  pc 00000d7c  /system/bin/app_process
  at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
  at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:587)
  at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:422)
  at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:445)
  at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:475)
  at com.tsl.touch.navigator.MainActivity.animation(MainActivity.java:369)
  at com.tsl.touch.navigator.MainActivity.showAnimation(MainActivity.java:448)
  at com.tsl.touch.navigator.MainActivity.parseDataAndPresent(MainActivity.java:653)
  at com.tsl.touch.navigator.MainActivity.access$800(MainActivity.java:61)
  at com.tsl.touch.navigator.MainActivity$NaviEventRunnable.run(MainActivity.java:1024)
  at android.os.Handler.handleCallback(Handler.java:733)
  at android.os.Handler.dispatchMessage(Handler.java:95)
  at android.os.Looper.loop(Looper.java:136)
  at android.app.ActivityThread.main(ActivityThread.java:5017)
  at java.lang.reflect.Method.invokeNative(Native Method)
  at java.lang.reflect.Method.invoke(Method.java:515)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
  at dalvik.system.NativeStart.main(Native Method)

Второй раз:

----- pid 759 at 2014-03-27 00:04:10 -----
Cmd line: com.tsl.touch.navigator

JNI: CheckJNI is off; workarounds are off; pins=0; globals=265

DALVIK THREADS:
(mutexes: tll=0 tsl=0 tscl=0 ghl=0)

"main" prio=5 tid=1 SUSPENDED
  | group="main" sCount=1 dsCount=0 obj=0x2c010ca8 self=0x2bf4a3f8
  | sysTid=759 nice=0 sched=0/0 cgrp=apps handle=716206420
  | state=S schedstat=( 62555000000 300000000 3089 ) utm=6004 stm=250 core=0
  #00  pc 000219bc  /system/lib/libc.so (__futex_syscall3+8)
  #01  pc 0000ef7c  /system/lib/libc.so (__pthread_cond_timedwait_relative+48)
  #02  pc 0000efdc  /system/lib/libc.so (__pthread_cond_timedwait+64)
  #03  pc 000536b7  /system/lib/libdvm.so
  #04  pc 00053c79  /system/lib/libdvm.so (dvmChangeStatus(Thread*, ThreadStatus)+34)
  #05  pc 00038a41  /system/lib/libdvm.so
  #06  pc 00039aa3  /system/lib/libdvm.so
  #07  pc 0003b849  /system/lib/libdvm.so
  #08  pc 00001f4b  /system/lib/libnativehelper.so (jniGetNonMovableArrayElements+22)
  #09  pc 00077ea9  /system/lib/libandroid_runtime.so (GraphicsJNI::allocateJavaPixelRef(_JNIEnv*, SkBitmap*, SkColorTable*)+44)
  #10  pc 00077f23  /system/lib/libandroid_runtime.so (JavaPixelAllocator::allocPixelRef(SkBitmap*, SkColorTable*)+18)
  #11  pc 0008f8f5  /system/lib/libskia.so (SkBitmap::allocPixels(SkBitmap::Allocator*, SkColorTable*)+28)
  #12  pc 000eeb61  /system/lib/libskia.so (SkPNGImageDecoder::onDecode(SkStream*, SkBitmap*, SkImageDecoder::Mode)+194)
  #13  pc 000eb0e1  /system/lib/libskia.so (SkImageDecoder::decode(SkStream*, SkBitmap*, SkBitmap::Config, SkImageDecoder::Mode)+36)
  #14  pc 00075201  /system/lib/libandroid_runtime.so
  #15  pc 00075375  /system/lib/libandroid_runtime.so
  #16  pc 0001dbcc  /system/lib/libdvm.so (dvmPlatformInvoke+112)
  #17  pc 0004e123  /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+398)
  #18  pc 00026fe0  /system/lib/libdvm.so
  #19  pc 0002dfa0  /system/lib/libdvm.so (dvmMterpStd(Thread*)+76)
  #20  pc 0002b638  /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
  #21  pc 00060865  /system/lib/libdvm.so (dvmInvokeMethod(Object*, Method const*, ArrayObject*, ArrayObject*, ClassObject*, bool)+392)
  #22  pc 000687c7  /system/lib/libdvm.so
  #23  pc 00026fe0  /system/lib/libdvm.so
  #24  pc 0002dfa0  /system/lib/libdvm.so (dvmMterpStd(Thread*)+76)
  #25  pc 0002b638  /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
  #26  pc 00060581  /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+336)
  #27  pc 00049d0b  /system/lib/libdvm.so
  #28  pc 0004cde7  /system/lib/libandroid_runtime.so
  #29  pc 0004db0b  /system/lib/libandroid_runtime.so (android::AndroidRuntime::start(char const*, char const*)+354)
  #30  pc 0000105b  /system/bin/app_process
  #31  pc 0000e403  /system/lib/libc.so (__libc_init+50)
  at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
  at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:587)
  at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:422)
  at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:445)
  at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:475)
  at com.tsl.touch.navigator.MainActivity.animation(MainActivity.java:379)
  at com.tsl.touch.navigator.MainActivity.showAnimation(MainActivity.java:448)
  at com.tsl.touch.navigator.MainActivity.parseDataAndPresent(MainActivity.java:653)
  at com.tsl.touch.navigator.MainActivity.access$800(MainActivity.java:61)
  at com.tsl.touch.navigator.MainActivity$NaviEventRunnable.run(MainActivity.java:1022)
  at android.os.Handler.handleCallback(Handler.java:733)
  at android.os.Handler.dispatchMessage(Handler.java:95)
  at android.os.Looper.loop(Looper.java:136)
  at android.app.ActivityThread.main(ActivityThread.java:5017)
  at java.lang.reflect.Method.invokeNative(Native Method)
  at java.lang.reflect.Method.invoke(Method.java:515)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
  at dalvik.system.NativeStart.main(Native Method)

Я хочу знать, какую подсказку можно извлечь из этих следов, и я хочу знать потенциальное решение для устранения сбоя / зависания.

Мое чувство кодера говорит мне, что оно как-то связано с управлением памятью, точнее, система, похоже, не смогла выделить память для декодирования растрового изображения.

Пожалуйста, помогите?

...