Android signal 11 sigsegv fault addr

Приложение сбой (иногда) с фатальным сигналом 11 (SIGSEGV), код 1

Я разрабатываю приложение со ЗДЕСЬ sdk, и все работает до сих пор. Я получаю такие ошибки:
Fatal signal 11 (SIGSEGV), code 1, fault addr 0x750057 in tid 10206 (FinalizerDaemon)
Или этот:
Fatal signal 11 (SIGSEGV), code 1, fault addr 0x94789680 in tid 24605 (FinalizerDaemon)

И они делают мое приложение крахом.

Это не всегда одни и те же ошибки, но они всегда приходят в одиночку в моем Logcat, без какой-либо другой информации.

Во всем моем приложении я использую объекты и службы ЗДЕСЬ, и даже при печати stacktrace я не получаю больше информации об ошибках.
Я просто заметил, что эти ошибки появляются довольно случайным образом, но только тогда, когда я использую эти объекты / службы.

Я использую реальное устройство для тестирования моего приложения, компакт-диска Sony Xperia Z3, поэтому я не думаю, что это происходит отсюда.

Я действительно потерян, поэтому, если кто-то даже знает, как получить больше информации об ошибках, пожалуйста, помогите

РЕДАКТИРОВАТЬ :

EDIT 2: теперь я уверен, что авария происходит, когда я извлекаю объекты HERE из базы данных с помощью gson.

Следующий код работает, когда все выполняется в одной и той же среде выполнения приложения, но когда я сохраняю строку в базе данных, закройте приложение, а затем снова откроем его, я получаю Fatal signal при преобразовании json string обратно в объект.

Я действительно не знаю, почему это не работает.

1) Сначала определите, является ли это ошибкой в ​​андроиде, сторонних библиотеках или вашем устройстве, чтобы вы могли узнать, к какому пути.

Этот ответ дает решение, как это сделать:

Если вы написали (или используете) плагин, который, в свою очередь, использует собственный код C / C ++ через NDK, это может указывать на ошибку в этом нативном коде.

В противном случае это ошибка в прошивке устройства или эмулятора, который вы тестируете.

Если вы можете воспроизвести это в эмуляторе, на устройстве Nexus с оригинальным ПЗУ или на разных устройствах от разных производителей, это, вероятно, ошибка в самом Android. В этом случае создайте образец проекта, который может воспроизвести ошибку, и отправьте его вместе со всей трассировкой стека на http://b.android.com , отслеживатель проблем ОС Android.

Если вы сталкиваетесь с этим только на одном устройстве или на одном стороннем ПЗУ, это, вероятно, более конкретная ошибка – лучше всего связаться с производителем устройства или издателем ПЗУ с вашими симптомами.

Вот эти два вопроса, которые обсуждают полученную вами ошибку:

Android Fatal signal 11 (SIGSEGV) на 0x636f7d89 (код = 1). Как его можно отследить?

Фатальный сигнал 11 (SIGSEGV) при 0x00000000 (код = 1) – PhoneGap

2) Что касается анализа ваших значений geobounds (как бы там ни было, может быть, проблема), убедитесь, что вы правильно обрабатываете ваш синтаксический анализ между Gson и Json с правильными значениями geobound. Похоже, что вы храните значения не в соответствии с тем, как вы их возвращаете.

ToJson () – преобразовать объект Java в JSON

FromJson () – преобразовать объект JSON в Java

Из этого ответа :

Эти вопросы SO дают более подробную информацию:
Как разбирать json-парсинг Использование GSON в андроиде
Разбор JSON с gson и GsonBuilder ()

3) Убедитесь, что вы передаете правильные значения для ваших геобондовых координат. Этот вопрос Значение не входит в ожидаемый диапазон GeoboundingBox WinRT (хотя это C # дает хороший пример того, как разбить компоненты информации, которую вы пытаетесь сохранить и получить.

Читайте также:  Budtmo docker android real device

И научитесь разбирать свой json с gson:

Используйте Gson для работы с JSON в приложениях для Android

Существует также это gihub repo для вас, чтобы просмотреть больше идей.

Вы можете вставить больше информации из adb logcat? В настоящее время нам недостаточно информации, чтобы помочь вам. Segfault в демозаторе финализатора может подразумевать двойное удаление собственных объектов. Без дополнительной информации это может быть где угодно в ОС или в SDK.

Пропущенные кадры означают, что ваше приложение обрабатывает множество данных в основном потоке. Пропуск 161 кадра означает более 3-х рабочих часов! Попробуйте использовать AsyncTasks или потоки для оптимизации вашего приложения.

Кажется, вы используете десериализатор типа GSON, который не будет правильно строить наши собственные объекты. В ручном режиме десериализация лата, lng и вызов нового GeoBoundingBox () не будет разбиваться.

Я решил такую ​​же проблему, следуя коду.

Добавьте android:vmSafeMode=»true» в теге приложения в файле манифеста .

Источник

Android фатальный сигнал 11 (SIGSEGV) на 0x636f7d89 (код=1). Как его можно выследить?

Я читал другие сообщения о отслеживании причин получения SIGSEGV в приложения Android. Я планирую очистить свое приложение для возможных NullPointers, связанных с использованием холста, но мой SIGSEGV barfs вверх по другому адресу памяти каждый раз. Плюс я видел code=1 и code=2 . Если адрес памяти был 0x00000000 , Я бы зацепка это, появляется сообщение об.

последний, который я получил, был code=2 :

любые предложения о том, как отслеживать это вниз?

когда я пишу это, я думаю, что это действительно проблема. Головная боль не раскалывается. из узла и OverlayItem из NodeOverlayItem, это то, что действие будет нуждаться в некоторых данных из узла, который содержит служба. Плюс, когда создается действие (onResume и т. д. ) объекты OverlayItem необходимо будет воссоздать из данных узла, который служба поддерживала в то время как действие отсутствовало. например, вы запускаете приложение, сервис собирает данные, пользовательский интерфейс отображает его, вы идете домой, потом обратно в приложение, упражнение нужно вытащить и заново создать OverlayItem по из последних данных узла службы.

Я знаю, что это не большие или четкие вопросы. Это похоже на то, что все мои вопросы so являются нишевыми или неясными. Если у кого-то есть предложение о том, как интерпретировать эти SIGSEGV ошибки, было бы весьма признателен!

обновление Вот последний сбой, зафиксированный во время сеанса отладки. У меня есть 3 из этих устройств, используемых для тестирования, и они не все сбой надежно, когда я разрабатываю и тестирую. Я включил немного больше просто таким образом, можно отметить ведение журнала GC. Вы можете видеть, что проблема, вероятно, не связана с исчерпанием памяти.

13 ответов

во-первых, получите трассировку стека надгробия, она будет печататься каждый раз, когда ваше приложение падает. Что-то вроде этого:—20—>

затем используйте addr2line утилита (найти его в цепочке инструментов NDK), чтобы найти функцию, которая падает. В этом примере, Вы делаете

и вы увидите, где у вас проблема. Конечно, это не поможет вам так, как в libc.

таким образом, вы можете объединить утилиты arm-eabi-objdump чтобы найти финал цель.

поверьте мне, это трудная задача.

просто для обновления. Я думаю, что я делал Android native build из целого дерева источников довольно долго, до сегодняшнего дня я сам внимательно читал документы NDK. С момента выпуска NDK-r6 он предоставил утилиту под названием ndk-stack .

Ниже приводится содержание из официальных документов NDK с NDK-r9 tar мяч.

описание:

ndk-stack — это простой инструмент, который позволяет фильтровать трассировки стека по мере их появления на выходе «ADB logcat» и заменять любой адрес внутри общей библиотеки соответствующими : значениями.

в двух словах, это будет означать что-то вроде:

в более читаемый вывод:

Читайте также:  Ntp сервер для андроид

использование:

для этого вам сначала понадобится каталог, содержащий символические версии общих библиотек приложения. Если вы используете систему сборки NDK (т. е. ndk-build ), то они всегда находятся под $PROJECT_PATH / obj / local/, где стоит ABI вашего устройства (т. е. armeabi по умолчанию).

вы можете кормить logcat текст либо как прямой вход в программу, например:

или вы можете использовать опцию-dump, чтобы указать logcat в качестве входного файла, например:

инструмент ищет начальную строку, содержащую начало в logcat вывод, т. е. что-то, что выглядит так:

при копировании / вставке трассировок не забывайте эту строку из трассировок или ndk-stack не будет работать правильно.

следующей версии ndk-stack попытается запустить adb logcat и выберите путь к библиотеке автоматически. На данный момент вам придется сделать эти шаги вручную.

сейчас ndk-stack не обрабатывает библиотеки, в которых нет отладочной информации. Может быть полезно попытаться обнаружить ближайшую точку входа функции к заданному адресу ПК (например, как в libc.так пример выше).

ОК! Мне очень жаль тех, кто действительно представил комментарии и ответы, но я нашел проблему. Я не думаю, что это поможет многим другим, пытающимся отследить их личный SIGSEGV, но мой (и это было очень сложно) был полностью связан с этим:

libcrypto.так что в моей помойке меня вроде как просветили. Я делаю MD5 хэш пакетных данных при попытке определить, если я уже я видел пакет и пропустил бы его, если бы видел. Я думал, что в какой-то момент это была уродливая проблема с потоками, связанная с отслеживанием этих хэшей, но оказалось, что это java.безопасность.MessageDigest класс! Это небезопасно!

Я поменял его с UID, который я заполнял в каждом пакете на основе UUID устройства и метки времени. С тех пор никаких проблем.

Я думаю, что урок, который я могу передать тем, кто был в моей ситуации, даже если вы 100% Java-приложение, обратите внимание в родную библиотеку и символ, отмеченный в аварийном дампе для подсказок. Поиск в гугле для SIGSEGV + lib .таким образом, имя будет идти намного дальше, чем бесполезный код=1 и т. д. Затем подумайте о том, где ваше Java-приложение может коснуться собственного кода, даже если вы ничего не делаете. Я допустил ошибку, предположив, что это проблема с потоком Service + UI, где холст рисовал что-то, что было null (самый распространенный случай, когда я гуглил на SIGSEGV), и проигнорировал возможность, что это могло быть полностью связано с код, который я написал, был связан с lib .значит, на аварийной свалке. Естественно, java.безопасность будет использовать собственный компонент в libcrypto.поэтому для скорости, поэтому, как только я понял, я погуглил для Android + SIGSEGV + libcrypto.так и нашли документированную проблему. Удачи!

Я получал эту ошибку, сохраняя объект в общих настройках в виде преобразованной строки gson. Строка gson не была хорошей, поэтому извлечение и десериализация объекта на самом деле работали неправильно. Это означало, что любые последующие обращения к объекту привели к этой ошибке. Страшно 🙂

Я также получил эту ошибку много раз и я ее решила. Эта ошибка будет возникать в случае управления памятью в родной стороне.

приложения является доступ к памяти за пределами своего адресного пространства. Скорее всего это недопустимый указатель. SIGSEGV = ошибка сегментации в собственном коде. Поскольку это не происходит в Java-коде вы не увидите трассировку стека с деталями. Однако вы все равно можете увидеть некоторую информацию трассировки стека в logcat, если немного осмотритесь после сбой процесса приложения. Он не сообщит вам номер строки в файле, но сообщит вам, какие объектные файлы и адреса использовались в цепочке вызовов. Оттуда вы часто можете выяснить, какая область кода является проблематичной. Вы также можете настроить собственное соединение gdb с целевым процессом и поймать его в отладчике.

я столкнулся с этой ошибкой, когда пытался получить доступ к «холсту» за пределами onDraw()

Читайте также:  Android menu background color

очень плохая практика :/

попробуйте отключить аппаратное ускорение в Android в манифесте.

Я получал эту ошибку при использовании растрового изображения:

что исправило проблему для меня, так это уменьшить размер растрового изображения (>1000px до 700px).

я столкнулся с SIGSEGV на Android 4.4.4 (Nexuses, Samsungs) И оказалось, что фатальная ошибка была в разборе null String используя DecimalFormat

на Android > 21 он был успешно обработан с помощью try / catch

сегодня я столкнулся с Fatal signal 11 (SIGSEGV), code 1, fault addr 0x8 in tid 18161 проблема, и я борюсь полдня, чтобы решить эту проблему.

Я пробовал много вещей, очищая кэш и удаляя .файл gradle и все такое.

Наконец-То Я disable Instant Run и теперь я не получаю эту проблему снова. Теперь мое приложение работает после включения instant run. Это может быть проблема мгновенного запуска, попробуйте отключить и включить instant run

Если вы используете библиотеку vitamio и эта фатальная ошибка возникает.

затем убедитесь, что в вашем проекте gradle targetSdkVersion должно быть меньше 23.

проверьте свой код JNI / native. Одна из моих ссылок была нулевой, но она была прерывистой, поэтому это было не очень очевидно.

Проверьте свои собственные функции, правильно ли он возвращается или нет,если он не возвращается, добавьте инструкции return.

в моем случае проблема была вызвана профилировщиком Android. В Android Studio нажмите «профилировщик Android «и»завершить сеанс».

по иронии судьбы, это также вызывало экстремальные проблемы с производительностью в приложении.

Источник

Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR) #42585

Comments

escamoteur commented Oct 12, 2019

While my App was running (a lot of custom Painters) I got this exception:

App was running on an Android Emulator.

Steps to Reproduce

I can’t, this happened one or two times before but not reproducible

Target Platform: Android
Target OS version/browser: API 29
Devices: Emulator

The text was updated successfully, but these errors were encountered:

jason-simmons commented Oct 14, 2019

Do you have any more lines from the backtrace?

Stack trace frames 4 and 5 map to Dart’s Syslog::PrintErr and DynamicAssertionHelper::Print , implying that the process died because a Dart assertion failed. But the trace doesn’t contain enough info to determine which assertion was at fault.

There may also be a problem with the Dart assertion mechanism itself. The log indicates that Syslog::PrintErr is passing a null string down to Android’s raw logging API.

escamoteur commented Oct 14, 2019

Unfortunately that was all that was printed

Max-Might commented Oct 18, 2019 •

Also happens with v1.9.1+hotfix.4.
For me it started after I started using AssetImages created by the r_flutter pub package/builder.

Max-Might commented Oct 22, 2019

I have noticed that the crash only happens when I start the program from Android Studio.
When I start it from the command line with flutter run it does not crash.

gaaclarke commented Oct 29, 2019

This is going to be almost impossible to debug without repro code. Even if it only happens infrequently. Jason’s reading of the crash info is about all we can glean from it.

@Max-Might do you have a reproduction of this crash you can share?

Max-Might commented Feb 13, 2020 •

@gaaclarke @jason-simmons With the latest stable version of Flutter 1.12.13+hotfix.8 the crash happens every time I use hot reload.
The project is quite big and I can not isolate any specific part of it that causes the crash.
I get the following when I run the project with flutter run -vv :

In addition here is how the same app crashes when we run it for iOS (from xCode):

Judging by the first couple of lines it might be connected to flutter’s assertion mechanism, as you said.

Источник

Оцените статью