Java-приложение для Android сбои с SIGSEGV

Мой Android-приложение иногда вылетает без каких-либо сообщений об ошибках. Приложение просто закрывается, и устройство возвращается на домашний экран.

Обычно было бы какое-то сообщение об ошибке, что приложение падало, но ничего не показывалось. Logcat показывает, что произошло какое-то нарушение сегментации, вызвавшее сбой, но так как приложение состоит только из Java-кода и без нативного кода, мне действительно любопытно, почему происходит сбой приложения. Кто-нибудь может дать мне подсказку?

Вот что показывает logcat при сбое приложения:

D/dalvikvm(23912): GC freed 3923 objects / 230968 bytes in 94ms
I/DEBUG   (18110): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG   (18110): Build fingerprint: 'MOTO_O2DE/umts_sholes/umts_sholes/sholes:2.1-update1/SHOLS_U2_02.36.0/6899264:user/rel-keys'
I/DEBUG   (18110): pid: 23912, tid: 23913  >>> com.example.test <<<
I/DEBUG   (18110): signal 11 (SIGSEGV), fault addr 0000000c
I/DEBUG   (18110):  r0 00140120  r1 00000048  r2 00000000  r3 00140168
I/DEBUG   (18110):  r4 afe3ae08  r5 00000006  r6 00140158  r7 0000a000
I/DEBUG   (18110):  r8 100ffcf8  r9 4185eef8  10 4185eee0  fp 001243b0
I/DEBUG   (18110):  ip 00000000  sp 100ffc50  lr afe0f130  pc afe0aeec  cpsr 80000070
I/DEBUG   (18110):          #00  pc 0000aeec  /system/lib/libc.so
I/DEBUG   (18110):          #01  pc 000008e6  /system/lib/libstdc++.so
I/DEBUG   (18110):          #02  pc 00014124  /system/lib/libutils.so
I/DEBUG   (18110):          #03  pc 0001423c  /system/lib/libutils.so
I/DEBUG   (18110):          #04  pc 0001af28  /system/lib/libbinder.so
I/DEBUG   (18110):          #05  pc 0001ba20  /system/lib/libbinder.so
I/DEBUG   (18110):          #06  pc 0001bcd6  /system/lib/libbinder.so
I/DEBUG   (18110):          #07  pc 00014236  /system/lib/libutils.so
I/DEBUG   (18110):          #08  pc 000293a6  /system/lib/libandroid_runtime.so
I/DEBUG   (18110):          #09  pc 000313ca  /system/lib/libandroid_runtime.so
I/DEBUG   (18110):          #10  pc 0000ecb4  /system/lib/libdvm.so
I/DEBUG   (18110):          #11  pc 00038838  /system/lib/libdvm.so
I/DEBUG   (18110):          #12  pc 000139b8  /system/lib/libdvm.so
I/DEBUG   (18110):          #13  pc 00019338  /system/lib/libdvm.so
I/DEBUG   (18110):          #14  pc 00018804  /system/lib/libdvm.so
I/DEBUG   (18110):          #15  pc 0004eed0  /system/lib/libdvm.so
I/DEBUG   (18110):          #16  pc 0004eef8  /system/lib/libdvm.so
I/DEBUG   (18110):          #17  pc 00044ada  /system/lib/libdvm.so
I/DEBUG   (18110):          #18  pc 00044b66  /system/lib/libdvm.so
I/DEBUG   (18110):          #19  pc 00044ff0  /system/lib/libdvm.so
I/DEBUG   (18110):          #20  pc 000425f4  /system/lib/libdvm.so
I/DEBUG   (18110):          #21  pc 0000fd94  /system/lib/libc.so
I/DEBUG   (18110):          #22  pc 0000f860  /system/lib/libc.so
I/DEBUG   (18110):
I/DEBUG   (18110): code around pc:
I/DEBUG   (18110): afe0aedc 809bf000 2d1f08d5 f8d0d829 68c2c008
I/DEBUG   (18110): afe0aeec 600cf8dc f0404286 6890822e f04042b0
I/DEBUG   (18110): afe0aefc 4594822a d1079e02 fa122201 59a2f505
I/DEBUG   (18110):
I/DEBUG   (18110): code around lr:
I/DEBUG   (18110): afe0f120 e1a00005 e3a01001 e1a02004 ebfffa00
I/DEBUG   (18110): afe0f130 e3500000 1a000001 ea000008 ebfffa0a
I/DEBUG   (18110): afe0f140 e1a01004 e3a00002 ebfffa05 e3a02000
I/DEBUG   (18110):
I/DEBUG   (18110): stack:
I/DEBUG   (18110):     100ffc10  afe3db94
I/DEBUG   (18110):     100ffc14  afe0f130  /system/lib/libc.so
I/DEBUG   (18110):     100ffc18  00000000
I/DEBUG   (18110):     100ffc1c  afe0f048  /system/lib/libc.so
I/DEBUG   (18110):     100ffc20  afe3d9dc
I/DEBUG   (18110):     100ffc24  998bffec
I/DEBUG   (18110):     100ffc28  afe3db94
I/DEBUG   (18110):     100ffc2c  afe0f130  /system/lib/libc.so
I/DEBUG   (18110):     100ffc30  afe3ae08  /system/lib/libc.so
I/DEBUG   (18110):     100ffc34  003f194c  [heap]
I/DEBUG   (18110):     100ffc38  00140158  [heap]
I/DEBUG   (18110):     100ffc3c  00005f38
I/DEBUG   (18110):     100ffc40  100ffcf8
I/DEBUG   (18110):     100ffc44  4185eef8
I/DEBUG   (18110):     100ffc48  df002777
I/DEBUG   (18110):     100ffc4c  e3a070ad
I/DEBUG   (18110): #00 100ffc50  a9da9208  /system/lib/libbinder.so
I/DEBUG   (18110):     100ffc54  00100000  [heap]
I/DEBUG   (18110):     100ffc58  00002bd4
I/DEBUG   (18110):     100ffc5c  afd008e9  /system/lib/libstdc++.so
I/DEBUG   (18110):     100ffc60  003ee870  [heap]
I/DEBUG   (18110):     100ffc64  00140158  [heap]
I/DEBUG   (18110):     100ffc68  003f194c  [heap]
I/DEBUG   (18110):     100ffc6c  003f194c  [heap]
I/DEBUG   (18110):     100ffc70  00005f38
I/DEBUG   (18110):     100ffc74  afd008e9  /system/lib/libstdc++.so
I/DEBUG   (18110): #01 100ffc78  00140158  [heap]
I/DEBUG   (18110):     100ffc7c  a9d14127  /system/lib/libutils.so
I/ActivityManager( 1283): Process com.example.test (pid 23912) has died.
I/WindowManager( 1283): WIN DEATH: Window{44fcf318 com.example.test/com.example.test.Main paused=false}
D/Zygote  ( 1054): Process 23912 terminated by signal (11)
D/dalvikvm( 1614): GC freed 1856 objects / 84128 bytes in 78ms

Android-версия устройства 2.1 обновление 1

2 ответа

Решение

SIGSEGV указывает на ошибку прошивки. Не должно быть способа вызвать один из них из приложения Android SDK.

Дамп ошибок показывает, что вы тестируете это на устройстве Motorola, возможно, DROID. Если у вас есть доступ к другому устройству, попробуйте там свое приложение и посмотрите, есть ли у вас такие же сбои.

Если вы сталкиваетесь с этими сбоями только на каком-то модифицированном ПЗУ, вам следует обратиться к производителю ПЗУ и указать на этот вопрос, желательно с инструкциями по воспроизведению этого сбоя.

Если у вас происходит сбой на нескольких устройствах, на каждом из которых установлена ​​стоковая прошивка, то это будет ошибка прошивки Android. Опубликуйте весь дамп ошибок, который вы имеете ниже, плюс шаги по воспроизведению сбоя, на http://b.android.com/.

Если у вас есть сбои только на этом устройстве Motorola, то весь дамп ошибок, который у вас есть ниже, плюс шаги по воспроизведению сбоя на соответствующую плату поддержки MOTODEV.

Эти внезапные сбои происходят в любом другом приложении?

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

Другие вопросы по тегам