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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.