Форум программистов, компьютерный форум CyberForum.ru

Как обрабатывать ошибки, когда трассировка стека не имеет пакета приложения? - Android

Войти
Регистрация
Восстановить пароль
 
GukZiLLA
 Аватар для GukZiLLA
35 / 35 / 2
Регистрация: 30.11.2013
Сообщений: 102
09.06.2015, 23:19     Как обрабатывать ошибки, когда трассировка стека не имеет пакета приложения? #1
Например вот:

Java
1
2
3
4
5
6
7
8
9
10
11
12
java.lang.NullPointerException
at android.view.textservice.SpellCheckerSession.handleOnGetSentenceSuggestionsMultiple(SpellCheckerSession.java:222)
at android.view.textservice.SpellCheckerSession.access$100(SpellCheckerSession.java:86)
at android.view.textservice.SpellCheckerSession$1.handleMessage(SpellCheckerSession.java:116)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:149)
at android.app.ActivityThread.main(ActivityThread.java:5061)
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:787)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:603)
at dalvik.system.NativeStart.main(Native Method)
При этом стек даже не содержит имени пакета приложения.
На определенном устройстве возникает такая ошибка и приложение закрывается.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2015, 23:19     Как обрабатывать ошибки, когда трассировка стека не имеет пакета приложения?
Посмотрите здесь:

Android Имя пакета приложения находящегося на переднем плане
Как получить layout с другого пакета? Android
Eclipse, как изменить домен по умолчанию в имени пакета при создании проекта? Android
Android Ошибка подписи пакета
Android Отправка пакета (UDP)
Как обрабатывать не только View элементы Android
Разное имя пакета и приложения Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mikalai
248 / 224 / 91
Регистрация: 11.01.2015
Сообщений: 643
10.06.2015, 00:35     Как обрабатывать ошибки, когда трассировка стека не имеет пакета приложения? #2
Ищи при помощи логов, например. В разных местах логируешь и смотришь где ещё работает, а где уже нет. Ты же сам должен представлять что у тебя происходит в коде и где могут быть косяки. Наверное это не лучший способ, но я так привык делать.
GukZiLLA
 Аватар для GukZiLLA
35 / 35 / 2
Регистрация: 30.11.2013
Сообщений: 102
10.06.2015, 04:23  [ТС]     Как обрабатывать ошибки, когда трассировка стека не имеет пакета приложения? #3
Цитата Сообщение от Mikalai Посмотреть сообщение
Ищи при помощи логов, например. В разных местах логируешь и смотришь где ещё работает, а где уже нет. Ты же сам должен представлять что у тебя происходит в коде и где могут быть косяки. Наверное это не лучший способ, но я так привык делать.
Было бы замечательно, если бы я писал код и вдруг такая ошибка начала бы возникать. Стабильно. Но как понять где копать, если стек приходит от какого-нибудь португальца, раз в месяц, скачавшего приложение с гугл плея.

Добавлено через 4 минуты
Когда пользователей становится уже несколько тысяч, то раз в день-два стабильно такие разнообразные ошибки приходят, у которых никак не понять откуда ноги растут.
Fulcrum_013
 Аватар для Fulcrum_013
509 / 613 / 68
Регистрация: 14.12.2014
Сообщений: 4,969
Завершенные тесты: 2
10.06.2015, 04:51     Как обрабатывать ошибки, когда трассировка стека не имеет пакета приложения? #4
Цитата Сообщение от GukZiLLA Посмотреть сообщение
у которых никак не понять откуда ноги растут.
В их часовом поясе смещение фазы луны превышает критическое.
Цитата Сообщение от GukZiLLA Посмотреть сообщение
Когда пользователей становится уже несколько тысяч, то раз в день-два стабильно такие разнообразные ошибки приходят
Если она у пользователя возникла, то и будет возникать постоянно. Если он прогой пользуется постоянно то и ошибки будут приходить постоянно от того же пользователя.

Добавлено через 2 минуты
Цитата Сообщение от GukZiLLA Посмотреть сообщение
java.lang.NullPointerException
Как вариант пустили на старом девайсе с версией андроида ниже требуемой и не нашелся нужный метод.
GukZiLLA
 Аватар для GukZiLLA
35 / 35 / 2
Регистрация: 30.11.2013
Сообщений: 102
10.06.2015, 05:06  [ТС]     Как обрабатывать ошибки, когда трассировка стека не имеет пакета приложения? #5
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Если она у пользователя возникла, то и будет возникать постоянно. Если он прогой пользуется постоянно то и ошибки будут приходить постоянно от того же пользователя.
Ух-ты, я прям прозрел!

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Как вариант пустили на старом девайсе с версией андроида ниже требуемой и не нашелся нужный метод.
Ак вот не вариант, так как выше требуемой.
Fulcrum_013
 Аватар для Fulcrum_013
509 / 613 / 68
Регистрация: 14.12.2014
Сообщений: 4,969
Завершенные тесты: 2
10.06.2015, 05:15     Как обрабатывать ошибки, когда трассировка стека не имеет пакета приложения? #6
Цитата Сообщение от GukZiLLA Посмотреть сообщение
Ак вот не вариант, так как выше требуемой.
Ну тогда проверяйте инициализацию всех переменных. И все динамические переменные перед обращением. И все результаты операций выделения памяти. Их кстати очень неплохо в try catch блок. а то они взяли моду не NULL возвращать если что не так а экскепшинами бросаться.

Добавлено через 2 минуты
Хотя конечно существует вариант что это проблема не вашего приложения а реализации андроида на какой то конкретной китайской модели трубы.

Добавлено через 1 минуту
Цитата Сообщение от GukZiLLA Посмотреть сообщение
При этом стек даже не содержит имени пакета приложения
т.е. как понимаю ваше приложение даже не получает управление, валится загрузчик ОС при запуске? Как вариант требования к ОЗУ или чему то еще выше чем есть в системе, ну и при попытке их распределения загрузчик вылетает, либо конфликт с правами доступа и т.д. Опять же не факт что в данной трубе корректно реализована поддержка всего функционала всех предыдущих версий.
GukZiLLA
 Аватар для GukZiLLA
35 / 35 / 2
Регистрация: 30.11.2013
Сообщений: 102
10.06.2015, 05:40  [ТС]     Как обрабатывать ошибки, когда трассировка стека не имеет пакета приложения? #7
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Хотя конечно существует вариант что это проблема не вашего приложения а реализации андроида на какой то конкретной китайской модели трубы.
В основном от китайцев и идут ошибки. От реальных китайцев с локалей zh_CN и изредка с других стран.

Вот например еще одна от pt_BR:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
java.lang.NullPointerException
at com.google.maps.api.android.lib6.d.ao.onClick(Unknown Source)
at android.view.View.performClick(View.java:4432)
at android.view.View$PerformClick.run(View.java:18339)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5283)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
at dalvik.system.NativeStart.main(Native Method)
Я канеш понимаю, что что-то с картами связано, но опять-таки пакета приложения нет в стеке.

Добавлено через 6 минут
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
т.е. как понимаю ваше приложение даже не получает управление, валится загрузчик ОС при запуске? Как вариант требования к ОЗУ или чему то еще выше чем есть в системе, ну и при попытке их распределения загрузчик вылетает, либо конфликт с правами доступа и т.д. Опять же не факт что в данной трубе корректно реализована поддержка всего функционала всех предыдущих версий.
Валится не при запуске приложения, а во время работы.
Если бы проблемы были с ОЗУ, то скорей всего получал бы outOfMemory?

Тут еще один момент, что мне надо как-то начальству объяснить, что это косяки прошивок))

---

Вот был случай с дешевым аппаратом lenovo A316i.
Гуглил долго, в итоге на каком-то форуме нашел, что возможно это косяк прошивки.
Написал письмо ленововцам, они ответили - спасибо, исправим.
Ну не знаю исправили они или просто так всем отвечают, но через неделю вышло обновление и уже багов таких не возникало.

---

Иногда удается понять что провоцирует ошибку в прошивке(?) и не провоцировать, но чаще всего не ясно что делать)

Добавлено через 10 минут
Fulcrum_013, наверняка станет интересно узнать как я такое перехватываю)

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class UnCaughtException implements UncaughtExceptionHandler {
    
    private Context ctx;
 
    public UnCaughtException(Context ctx) {
        this.ctx = ctx;
    }
 
    
    @Override
    public void uncaughtException(Thread t, Throwable e) {
        try {
            StringBuilder report = new StringBuilder();
            Date curDate = new Date();
            report.append("Error Report collected on : ").append(curDate.toString()).append('\n').append('\n');
            report.append("Informations :").append('\n');
            report.append('\n').append('\n');
            report.append("Stack:\n");
            final Writer result = new StringWriter();
            final PrintWriter printWriter = new PrintWriter(result);
            e.printStackTrace(printWriter);
            report.append(result.toString());
            printWriter.close();
            report.append('\n');
            report.append("**** End of current Report ***");
            Log.e(UnCaughtException.class.getName(), "Error while sendErrorMail" + report);
            sendError(ctx, report);
        } catch ( Throwable ignore ) {
            Log.e(UnCaughtException.class.getName(), "Error while sending error e-mail", ignore);
        }
    }
 
    ...
}
в методе sendError(ctx, report) происходит отправка ошибки на наш сервер.
В итоге всё перехваченное валится пачками и можно оперативно отслеживать работоспособность приложения.
Fulcrum_013
 Аватар для Fulcrum_013
509 / 613 / 68
Регистрация: 14.12.2014
Сообщений: 4,969
Завершенные тесты: 2
10.06.2015, 05:43     Как обрабатывать ошибки, когда трассировка стека не имеет пакета приложения? #8
Цитата Сообщение от GukZiLLA Посмотреть сообщение
Валится не при запуске приложения, а во время работы.
Тогда существует вариант что то что его валит по дороге еще и стек портит
GukZiLLA
 Аватар для GukZiLLA
35 / 35 / 2
Регистрация: 30.11.2013
Сообщений: 102
10.06.2015, 05:44  [ТС]     Как обрабатывать ошибки, когда трассировка стека не имеет пакета приложения? #9
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Тогда существует вариант что то что его валит по дороге еще и стек портит
Вот как понять что его валит и как это исправить?
Fulcrum_013
 Аватар для Fulcrum_013
509 / 613 / 68
Регистрация: 14.12.2014
Сообщений: 4,969
Завершенные тесты: 2
10.06.2015, 05:45     Как обрабатывать ошибки, когда трассировка стека не имеет пакета приложения? #10
Цитата Сообщение от GukZiLLA Посмотреть сообщение
Тут еще один момент, что мне надо как-то начальству объяснить, что это косяки прошивок))
Почему то думал что у тех кто на гугл-плэй размещает приложения начальство отсутствует как класс
GukZiLLA
 Аватар для GukZiLLA
35 / 35 / 2
Регистрация: 30.11.2013
Сообщений: 102
10.06.2015, 05:49  [ТС]     Как обрабатывать ошибки, когда трассировка стека не имеет пакета приложения? #11
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Почему то думал что у тех кто на гугл-плэй размещает приложения начальство отсутствует как класс
Есть свои игрульки и приложения, но они не выстрелили.
Слишком плохонькие видать)
Так что пока приходится мириться с начальством.
Fulcrum_013
 Аватар для Fulcrum_013
509 / 613 / 68
Регистрация: 14.12.2014
Сообщений: 4,969
Завершенные тесты: 2
10.06.2015, 05:49     Как обрабатывать ошибки, когда трассировка стека не имеет пакета приложения? #12
Цитата Сообщение от GukZiLLA Посмотреть сообщение
Вот как понять что его валит и как это исправить?
Если есть вопросы с NULL и порчей стэка то значит какой то указатель смотрит не туда. Учитывая что это JAVA то не туда его явно не вы указали а кто то другой вне вашего контроля (например кривая Java-машина). Или внешнее вмешательство. Был как то баг - при запуске одного приложения внешним лаунчером у него крешились java-машина которую он поднималю причем баг проявлялся именно на USA версии Windows-98. на других версиях той же 98-ой все работало отлично. Причиной бага было то что функции WinAPI именно в этой версии винды возвращали кривой указатель, пользуя который лаунчер рылся в куче запускаемого процесса.
GukZiLLA
 Аватар для GukZiLLA
35 / 35 / 2
Регистрация: 30.11.2013
Сообщений: 102
10.06.2015, 05:54  [ТС]     Как обрабатывать ошибки, когда трассировка стека не имеет пакета приложения? #13
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Если есть вопросы с NULL и порчей стэка то значит какой то указатель смотрит не туда. Учитывая что это JAVA то не туда его явно не вы указали а кто то другой вне вашего контроля (например кривая Java-машина). Или внешнее вмешательство. Был как то баг - при запуске одного приложения внешним лаунчером у него крешились java-машина которую он поднималю причем баг проявлялся именно на USA версии Windows-98. на других версиях той же 98-ой все работало отлично.
От этого слегка полегче на душе
Fulcrum_013
 Аватар для Fulcrum_013
509 / 613 / 68
Регистрация: 14.12.2014
Сообщений: 4,969
Завершенные тесты: 2
10.06.2015, 06:20     Как обрабатывать ошибки, когда трассировка стека не имеет пакета приложения? #14
Цитата Сообщение от GukZiLLA Посмотреть сообщение
От этого слегка полегче на душе
Причиной бага было то что функции WinAPI именно в этой версии винды возвращали кривой указатель, пользуя который лаунчер рылся в куче запускаемого процесса (отключал защиту армадилло).

Добавлено через 22 минуты
Цитата Сообщение от GukZiLLA Посмотреть сообщение
Так что пока приходится мириться с начальством.
Начальство бывает разное. Когда сам работал по найму начальство частенько занимало в результате позицию как мириться со мной. Но поскольку размер З/П был не в их компетенции (начальство отдела на заводе), то удержать меня им не удалось
GukZiLLA
 Аватар для GukZiLLA
35 / 35 / 2
Регистрация: 30.11.2013
Сообщений: 102
10.06.2015, 06:40  [ТС]     Как обрабатывать ошибки, когда трассировка стека не имеет пакета приложения? #15
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Начальство бывает разное. Когда сам работал по найму начальство частенько занимало в результате позицию как мириться со мной. Но поскольку размер З/П был не в их компетенции (начальство отдела на заводе), то удержать меня им не удалось
А сейчас как? ИП?
Fulcrum_013
 Аватар для Fulcrum_013
509 / 613 / 68
Регистрация: 14.12.2014
Сообщений: 4,969
Завершенные тесты: 2
10.06.2015, 06:43     Как обрабатывать ошибки, когда трассировка стека не имеет пакета приложения? #16
Цитата Сообщение от GukZiLLA Посмотреть сообщение
А сейчас как? ИП?
Временно безработный. Но это никоим образом не мешает фрилансить. И пилить свой большой проект.
Паблито
резкий
1890 / 1624 / 504
Регистрация: 12.05.2014
Сообщений: 5,849
Завершенные тесты: 1
10.06.2015, 09:04     Как обрабатывать ошибки, когда трассировка стека не имеет пакета приложения? #17
по первому сообщению я уверен что это не весь стек, уверен на 100%
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2015, 18:09     Как обрабатывать ошибки, когда трассировка стека не имеет пакета приложения?
Еще ссылки по теме:

Как работает шаблон NavigationDrawer в AndroidStudio, где обрабатывать нажатия на навигационной панели? Android
Android Проверить установку пакета
Как получить доступ к методам объекта класса наследуемого от Activity, когда он выводится во вкладку Android
Сервис в отдельном процессе имеет доступ к файлам настойки приложения родителя? Android
Как узнать когда пользователь перестает касаться экрана? Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
prokofyev2
0 / 0 / 0
Регистрация: 23.09.2015
Сообщений: 1
23.09.2015, 18:09     Как обрабатывать ошибки, когда трассировка стека не имеет пакета приложения? #18
NullPointerException в handleOnGetSentenceSuggestionsMultiple(SpellCheckerSession.java:222) - известный баг в Android 4.4.2. Лечится отключением спеллчекера для полей ввода (но это не всегда допустимо, к сожалению).

http://stackoverflow.com/questions/2...ellcheckersess
Yandex
Объявления
23.09.2015, 18:09     Как обрабатывать ошибки, когда трассировка стека не имеет пакета приложения?
Ответ Создать тему
Опции темы

Текущее время: 08:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru