LINUX.ORG.RU

Словить сегфолт в C-ном модуле, используемом в Python


0

0
Как сабж?

Есть модуль (из пакета pymedia), написанный на C. При определенных обстоятельствах он падает с сегфолтом. Интепретатор при этом молча падает.

Есть ли возможность этот сегфолт перехватить из питона?

★★★★★
Из Питона - нет. Можно написать свой модуль, перехватывающий SIGSEGV. Правда, непонятно - что с этим сигналом делать.

Кстати, корка от упавшего интерпретатора вполне поддается обычному анализу gdb.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner
Пнятно, спасибо.

Значит буду ковырять исходники модуля...

AngryElf ★★★★★
() автор топика
Ответ на: комментарий от tailgunner
> Из Питона - нет. Можно написать свой модуль, перехватывающий SIGSEGV. Правда, непонятно - что с этим сигналом делать.

Я видел разок мощную прогу (правда, конечно, не на питоне), которая из обработчиков SIG{SEGV,BUS,ILL} делала longjmp в начало тела "главного цикла обработки".

Зато она никогда не коркалась, да...

anonymous
()
просто запусти интерпретатор под дебаггером

после сегфолта зделай bt или что тебе будет по душе

cvv ★★★★★
()
Ответ на: комментарий от anonymous
в плане повиснет ты наверное прав

я имел ввиду что в штатный режим не возвратится...

cvv ★★★★★
()
смысла в этом нет. тк даже если ты перехватишь, работать после этого нормально она не будет. сегфолт для того и придумали чтоб ты знал об ошибках в коде. gdb/valgrind в руки и вперёд.
anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.