Почему std::signal(SIGSEGV, SIG_DFL) вызывает SIGABRT?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Почему std::signal(SIGSEGV, SIG_DFL) вызывает SIGABRT?

Сообщение Anonymous »

Я работаю в индустрии мобильных приложений. У нас сложные приложения, и мы полагаемся на Crashlytics для анализа аварийных дампов.
Одна из проблем, с которой мы время от времени сталкиваемся, — это ошибки сегментации (SIGSEGV) в собственном коде Android.
Недавно мы поняли, что подавляющее большинство наших ошибок сегментации происходит из-за «поддельных» телефонов, которые лгут об их возможностях Vulkan.
Чтобы снизить предполагаемую частоту сбоев, мы начали устанавливать обработчик сигнала перед инициализацией Vulkan, чтобы мы могли определить, когда оборудование физически не может обрабатывать рендеринг.
После теста запуска мы «сбрасываем» обработчик сигнала с помощью std::signal(SIGSEGV , SIG_DFL);
По какой-то причине все события SIGSEGV после сброса выдают сигнал SIGABRT (прерывание) таким образом, что уничтожается стек и его очень трудно определить:< /p>
  • Это была ошибка сегментации, вызвавшая сбой.
  • Какой код запускался, что вызвало ошибку сегментации
  • Какой код выполнялся, что вызвало ошибку сегментации
    li>
Я знаю, что это происходит, потому что сейчас в Crashlytics нет стеков SIGSEGV, а вместо этого мы получаем довольно много SIGABRT именно в тех местах, где мы раньше видел ошибки SIGSEGV.
Есть ли у кого-нибудь информация по этому поводу? Может ли помочь установка обработчика null_ptr вместо SIG_DFL?

Подробнее здесь: https://stackoverflow.com/questions/791 ... se-sigabrt
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»