BSDPORTAL.RU
http://bsdportal.ru/

Затертый стек (из backtrace) в обработчике sigaction
http://bsdportal.ru/viewtopic.php?f=59&t=27849
Страница 1 из 1

Автор:  robert1307 [ Вс 01 май, 2016 8:35 pm ]
Заголовок сообщения:  Затертый стек (из backtrace) в обработчике sigaction

Господа товарищи! Кому не сложно - проверьте вывод приаттаченного исходника у себя и отпишите с версией bsd.
У меня весь стек до signalHandler всегда затерт... Вот вывод на моей машине (FreeBSD 10.2):
Код:
   
stack dump [0]  0x40d4e5 <_Z9stackdumpPKc+0x85> at /ara/devel/sandbox/new/cpp/Release/cpp
stack dump [1]  0x40dafd <_Z13signalHandleriP9__siginfoPv+0x3d> at /ara/devel/sandbox/new/cpp/Release/cpp
stack dump [2]  0x801f30997 <pthread_sigmask+0x497> at /lib/libthr.so.3
stack dump [3]  0x801f301a8 <pthread_getspecific+0xdd8> at /lib/libthr.so.3


Вложения:
main.cpp [3.46 КБ]
Скачиваний: 172

Автор:  arrowdodger [ Ср 04 май, 2016 2:37 pm ]
Заголовок сообщения:  Re: Затертый стек (из backtrace) в обработчике sigaction

То же самое, только двух последних нет. Что-то не так? Нормальное поведение, вроде бы.

Автор:  robert1307 [ Ср 04 май, 2016 5:35 pm ]
Заголовок сообщения:  Re: Затертый стек (из backtrace) в обработчике sigaction

А какая версия ОС?
Должна быть инфа о foo\foo2 в стеке...

Автор:  arrowdodger [ Чт 05 май, 2016 3:30 pm ]
Заголовок сообщения:  Re: Затертый стек (из backtrace) в обработчике sigaction

ОС:

Код:
FreeBSD 10.2-PRERELEASE #4 r286761: Sat Aug 15 03:01:24 MSK 2015


Что касается
Цитата:
Должна быть инфа о foo\foo2 в стеке...

то я что-то не уверен. Откуда инфа?

Автор:  robert1307 [ Чт 05 май, 2016 6:23 pm ]
Заголовок сообщения:  Re: Затертый стек (из backtrace) в обработчике sigaction

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

Автор:  arrowdodger [ Чт 05 май, 2016 7:37 pm ]
Заголовок сообщения:  Re: Затертый стек (из backtrace) в обработчике sigaction

Гм, я думаю сигналхэндлер вызывается в другом стеке. Согласен, неоднозначно. Посмотрим, что ответят вам в рассылке.

Автор:  robert1307 [ Чт 05 май, 2016 7:56 pm ]
Заголовок сообщения:  Re: Затертый стек (из backtrace) в обработчике sigaction

Странно что thread_id один и тот же, поэтому не понятно откуда взялся другой стек..

Автор:  arrowdodger [ Пт 06 май, 2016 12:42 pm ]
Заголовок сообщения:  Re: Затертый стек (из backtrace) в обработчике sigaction

LLVM в случае крэша умеет показывать правильный красивый бэктрейс. Можете глянуть как там сделано для FreeBSD. Это где-то в lib/Support было, когда я последний раз там был.

Автор:  robert1307 [ Пт 07 июл, 2017 3:07 am ]
Заголовок сообщения:  Re: Затертый стек (из backtrace) в обработчике sigaction

В freebsd-hackers@freebsd.org ответили чуваку с похожим вопросом:

Signal handlers use a special stack frame that libexecinfo is too
simple to understand. To get a stack from a signal handler, you might
want to use libunwind instead.

Страница 1 из 1 Часовой пояс: UTC + 4 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/