Ответ 1
"Segmentation fault (core dumped)"
- это строка, которую печатает Linux, когда программа выходит с сигналом SIGSEGV
и у вас включено создание ядра. Это означает, что какая-то программа потерпела крах.
Если вы на самом деле получаете эту ошибку при запуске Python, это означает, что интерпретатор Python потерпел крах. Это может произойти только по нескольким причинам:
Вы используете сторонний модуль расширения, написанный на C, и этот модуль расширения вышел из строя.
Вы (прямо или косвенно) используете встроенный модуль
ctypes
и вызываете внешний код, который дает сбой.Что-то не так с вашей установкой Python.
Вы обнаружили ошибку в Python, о которой следует сообщить.
Первый, безусловно, самый распространенный. Если ваш q
является экземпляром какого-либо объекта из какого-либо стороннего модуля расширения, вы можете посмотреть документацию.
Часто, когда происходит сбой модулей C, это происходит потому, что вы делаете что-то недопустимое или, по крайней мере, необычное и непроверенное. Но будет ли это ваша "вина" в этом смысле или нет - не имеет значения. Модуль должен вызывать исключение Python, которое вы можете отлаживать, а не вылетать. Таким образом, вы, вероятно, должны сообщить об ошибке любому, кто написал расширение. Но, тем не менее, вместо того, чтобы ждать 6 месяцев, чтобы ошибка была исправлена и появилась новая версия, вам нужно выяснить, что вы сделали, что вызвало сбой, и есть ли какой-то другой способ сделать то, что вы хотите. Или переключитесь на другую библиотеку.
С другой стороны, поскольку вы читаете и распечатываете данные откуда-то еще, возможно, ваш интерпретатор Python просто прочитал строку "Segmentation fault (core dumped)"
и точно напечатал прочитанное. В этом случае какая-то другая программа в апстриме предположительно потерпела крах. (Возможно даже, что никто не потерпел крах - если вы извлечете эту страницу из Интернета и распечатаете ее, вы получите ту же самую строку, верно?) В вашем случае, основываясь на вашем комментарии, это, вероятно, сбой программы Java.
Если вы не уверены, в каком случае это происходит (и не хотите изучать, как выполнять управление процессами, проверку файла ядра или отладку на уровне C сегодня), есть простой способ проверить: после print line
добавьте линия, говорящая print "And I'm OK"
. Если вы видите это после строки Segmentation fault
, то Python не падает, кто-то другой сделал. Если вы этого не видите, то, вероятно, произошел сбой Python.