LINUX.ORG.RU

Segmentation Fault in Python


0

0

Как узнать что вызывает segmentation fault во время выполнения python программы? программа обрывается чем-то вроде: ./client: line 1: 24316 Segmentation fault PYTHONPATH=.:$PYTHONPATH python main.py


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

Что то похожее бывает при выходе, пр попытке вызова функции висящий на atexit. но на взлете - не встречал.

AIv ★★★★★
()
Ответ на: комментарий от AIv

Использую PyQT и QT3... Дело в том, что я не могу найти никакой корреляции segmentation fault с другими событиями.. То есть непонятно в какой ситуации может он возникнуть... Что может быть причиной Memory leak или глюк в PyQT/QT/Python... А как вообще поступать... перекомпилировать python и запостить сеанс в gdb...? Или python программу запустить в pdb.. ?

gaffer
() автор топика
Ответ на: комментарий от gaffer

Pdb то не может помочь... Ведь валится сам интерпретатор.... Кстати если у меня либы всякие, extentions установлены на python 2.3 то можно ли безболезнено переползти на python 2.4 ?

gaffer
() автор топика
Ответ на: комментарий от gaffer

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

Про сегм.фаулт - тебе хотя бы надыть локализовать в какой сторонней ф-ии это происходит. Если это в сторонней ф-ии....

AIv ★★★★★
()
Ответ на: комментарий от AIv

А как это сделать? (глупый вопрос, конечно, но реально не всегда понятно отчего приложение валится) Так бы какой-нить дамп получить... Кстати иногда и после выхода из приложения (если было запущено из КС), появляется строка segmentation fault

gaffer
() автор топика
Ответ на: комментарий от gaffer

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

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

AIv ★★★★★
()
Ответ на: комментарий от AIv

Да я этим и занимаюсь.... но так-то это просто трендец какой-то локализовать ошибку... где-то что-то не так на стыке пайтона и qt... а что именно...

gaffer
() автор топика
Ответ на: комментарий от gaffer

Ну... если впадлу разбираться с отладчиком, что вообще странно (мне просто в питоне не приходилось сталкиваться с ошибками к-е руками трудно пойматть)))), напиши сам враппер-класс к-й сам будет выкидывать всю диагностику. Это довольно просто, переопределяешь __getattr__ так что бы он возвращал запрошенный метод в оболочке, и при этом куда нить ругался. , заверни в него qt либу и вперед...ф-ю сможешь довольно быстро локализовать.

AIv ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.