Ошибка сегментации: 11 в OS X
Я получаю проблему в Python 3.3.2 на OSX 10.9, где, если я открою Python в окне терминала, он выйдет с "Ошибка сегментации: 11" после второй строки, которую я вводил, независимо от того, что представляют собой две команды. Например, если я введу:
>>> for x in range(1000): print(x)
работает нормально, но если я введу:
>>> for x in range(1000):
... print(x)
то я получаю ошибку, когда я нажимаю кнопку ввода во второй строке. Я также могу запустить script с более чем двумя строками без проблем.
Я сегодня обновился до OSX 10.9, поэтому я подозреваю, что это возможно.
Однако, я недавно установил IPython (наряду с несколькими другими пакетами) и использовал это последние пару дней, так что это может быть что-то еще, что я установил недавно. У меня была пара неудачных попыток установить PyQt, где я запустил configure.py, но затем сработала команда "make", о которой я также подозревал.
Я попытался переустановить Python, но это не решило проблему. И IPython, и IDLE работают без проблем. Меня просто беспокоит то, что может быть основной проблемой.
Любая помощь приветствуется, спасибо заранее.
Ответы
Ответ 1
Это ошибка совместимости readline в python, связанная с изменениями, внесенными в OSX10.9. В эти выходные были выпущены кандидаты на Python2.7.6 и Python3.3.3, которые исправили эту ошибку. Ссылки для скачивания ниже.
http://python.org/download/releases/2.7.6/
http://python.org/download/releases/3.3.3/
Здесь проблема, цитируемая из Ned Deily, написана в списке писем python-dev.
Во вторник Apple выпустила OS X 10.9 (a.k.a. Mavericks). Там уже был очень заинтересован в этом, отчасти потому, что Apple сделала его доступным для бесплатно и облегчил пользователям 10,8, 10,7 и (большинство) 10,6 систем для обновления до 10.9. К сожалению, есть проблемы с нашим текущим (3.3.2 и 2.7.5) на OS X 10.9, которые требуют новых как можно скорее.
Один из них имеет решающее значение в том, что он вызывает сбой интерпретатора при работе в интерактивный режим (http://bugs.python.org/issue18458). Проблема была вызвана давняя проблема совместимости в слое совместимости с readline libedit что восходящий поток наконец-то был исправлен, и Apple теперь отправлена в 10.9. Потому как инсталляторы python.org динамически ссылаются на libedit, оригинальное обходное решение в readline.c для первоначального дефекта дизайна при индексировании истории теперь вызывает segfault на 10.9, когда пользователь вводит вторую команду в интерактивном режиме. Не хорошо. Рональд разработал исправление, позволяющее readline.so во время выполнения обнаруживать и работайте с любой версией libedit, чтобы мы продолжали иметь двоичный файл совместимость для нескольких выпусков OS X. Это исправление уже вышло в 3.4.0 альфа и backported в ветки 3.3 и 2.7, ожидающие выхода там. Всего за последние 12 часов было по крайней мере четыре дубликата проблема, о которой сообщают пользователи. Я обновил исходную проблему до явно упомянуть 10.9, теперь, когда он больше не находится под NDA, и предоставить загружаемый script для неопытных пользователей, чтобы обход проблемы "удаление" readline.so. Предположительно, когда слово выйдет, будет меньше повторяющиеся проблемы открываются, но влияние остается.
Ответ 2
У меня была эта проблема после обновления до OS X 10.9 и использовалась исправление, представленное на веб-сайте Python: http://bugs.python.org/issue18458#msg201087
Чтобы использовать его, откройте сеанс терминала в Terminal.app(или другой оболочке), затем введите:
curl -O http://bugs.python.org/file32324/patch_readline_issue_18458.sh
openssl sha1 patch_readline_issue_18458.sh
# the digest should be 7cb0ff57820a027dd4ca242eb2418930f8f46b4c
то
sh ./patch_readline_issue_18458.sh
Введите свой пароль, если будет предложено
Ответ 3
У меня была эта проблема. Изменение chunksize
в моем парсере csv на 100 устраняет ошибку.
Ответ 4
Я столкнулся с подобными ошибками "ошибки сегментации 11", но для меня он использовал ртутный (hg)
Это пыталось использовать Python 2.7.8, установленный с помощью установщика .mpkg, и pip install mercurial
На OS X 10.9.5
Я думал, что обновление до 2.7.8 разрешило бы это, но казалось, что mercurial все еще ищет System/Library/Frameworks/Python.framework/Versions/2.7
Даже после попытки следовать этому слегка неразумным советам Все еще не работало. Я бы запустил
hg init
hg add *
hg commit -m ...
hg status
получит "segmentation fault 11"
Первые две строки трассировки стека указывают на это:
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 ??? 000000000000000000 0 + 0
1 osutil.so 0x00000001095ef768 listdir + 313
2 org.python.python 0x0000000109261b35 PyEval_EvalFrameEx + 14712
3 org.python.python 0x000000010925e093 PyEval_EvalCodeEx + 1641
В конце концов, мое решение, похоже, произошло из (re) установки python с homebrew, используя это, чтобы получить выпуск 2.7.8 (как от декабря 2014 года)
Затем я переустановил mercurial с помощью brew install mercurial, который, похоже, разрешил любые зависимости, вызывающие это. Мне жаль, что я лучше не понял, что происходит с вилкой Seg, но не смог добраться до нее.
Самое лучшее, что у меня есть, это то, что mercurial все еще ссылался на системный python, несмотря на то, что 2.7.8 установлено правильно, а usr/local/bin - первым в пути
/USR/локальные/бен: USR/локальные/ git/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/3.4/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin: ~/Разработка:/usr/local/git/bin: нет такого файла или каталога
Итак, я предлагаю обновить установку python с помощью brew, а затем переустановить любые другие пакеты, на которые вы зависите.