Development Tip

세분화 오류 : OS X에서 11

yourdevel 2020. 12. 1. 19:53
반응형

세분화 오류 : OS X에서 11


OSX 10.9의 Python 3.3.2에서 문제가 발생합니다. 터미널 창에서 Python을 열면 두 명령이 무엇인지에 관계없이 입력 한 두 번째 줄 후에 "Segmentation error : 11"로 종료됩니다. 예를 들어 다음을 입력하면 :

>>> for x in range(1000): print(x)

잘 작동하지만 입력하면 :

>>> for x in range(1000):
...     print(x)

두 번째 줄에서 Enter 키를 누르면 오류가 발생합니다. 또한 문제없이 2 줄 이상의 스크립트를 실행할 수 있습니다.

오늘 오후에 OSX 10.9로 업데이트했기 때문에 그럴 수도 있습니다.

그러나 최근에 IPython (다른 여러 패키지와 함께)을 설치했고 지난 며칠 동안 사용 했으므로 최근에 설치 한 다른 것일 수 있습니다. configure.py를 실행 한 PyQt 설치 시도가 몇 번 실패했지만 "make"명령이 실패했고 의심 스러웠습니다.

Python 재설치를 시도했지만 문제가 해결되지 않았습니다. IPython과 IDLE 모두 문제없이 작동합니다. 나는 근본적인 문제가 무엇인지 걱정하고 있습니다.


이것은 OSX10.9에 도입 된 변경 사항과 관련된 Python의 readline 호환성 버그입니다. 이번 주말에이 버그를 수정하는 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 (일명 Mavericks)를 출시했습니다. 부분적으로는 Apple이 무료로 제공하고 10.8, 10.7 및 (대부분) 10.6 시스템을 사용하는 사용자가 10.9로 직접 업그레이드하는 것을 쉽게 만들었 기 때문에 이미 많은 관심이있었습니다. 안타깝게도 OS X 10.9의 현재 유지 관리 릴리스 (3.3.2 및 2.7.5)에 가능한 한 빨리 새로운 유지 관리 릴리스가 필요한 문제가 있습니다.

하나는 대화 형 모드 ( http://bugs.python.org/issue18458). 문제는 libedit의 readline 호환성 계층에서 오랫동안 지속 된 호환성 문제로 인해 업스트림이 마침내 수정되었고 Apple은 이제 10.9에서 출시되었습니다. python.org 설치 프로그램이 libedit에 동적으로 링크되기 때문에, 히스토리 인덱싱의 원래 디자인 결함에 대한 readline.c의 원래 해결 방법은 사용자가 두 번째 명령을 대화식으로 입력 할 때 10.9에서 segfault를 발생시킵니다. 안좋다. Ronald는 런타임에 readline.so가 libedit의 두 버전 중 하나를 감지하고 작업 할 수 있도록 수정하여 여러 OS X 릴리스에서 이진 호환성을 계속 유지할 수 있도록했습니다. 이 수정 사항은 이미 3.4.0 알파 버전에서 출시되었으며 3.3 및 2.7 브랜치로 백 포트되어 릴리스를 기다리고 있습니다. 지난 12 시간 동안 사용자가보고 한 문제의 중복이 4 개 이상있었습니다. 나는' 은 10.9를 명시 적으로 언급하도록 업데이트했으며, 이제 더 이상 NDA에 포함되지 않으며, 경험이없는 사용자가 readline.so를 "제거"하여 문제를 해결할 수 있도록 다운로드 가능한 스크립트를 제공합니다. 아마도 말이 나오면 중복 된 이슈는 줄어들 겠지만 그 영향은 남을 것입니다.


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

메시지가 나타나면 암호를 입력하십시오.


나는이 문제가 있었다. chunksize내 csv 파서를 100으로 변경하면 오류가 제거되었습니다.


비슷한 '분할 오류 11'오류가 발생했지만 저에게는 mercurial (hg)을 사용했습니다.

이것은 .mpkg 설치 프로그램을 통해 설치된 Python 2.7.8을 사용하고 OS X 10.9.5에서 mercurial을 설치하려고했습니다.

2.7.8로 업데이트하면이 문제가 해결 될 것이라고 생각했지만 mercurial은 여전히 ​​System / Library / Frameworks / Python.framework / Versions / 2.7을 찾고있는 것 같습니다.

약간 어리석은 조언 을 따르려고 시도한 후에도 여전히 작동하지 않았습니다. 나는 달릴 것이다

hg init
hg add *
hg commit -m ...
hg status

'분할 오류 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

결국 내 솔루션은 2.7.8 릴리스를 얻기 위해 homebrew 와 함께 Python을 (재) 설치 하여 나온 것 같습니다 (2014 년 12 월 기준)

그런 다음 brew install mercurial로 수은을 다시 설치했는데, 이는이 문제를 일으키는 모든 종속성을 해결 한 것으로 보입니다. 나는 Seg 결함으로 무슨 일이 일어나고 있는지 더 잘 이해하고 싶지만 그 밑바닥에 도달하지 못했습니다.

내가 여전히 가지고있는 가장 좋은 추측은 2.7.8이 올바르게 설치되고 usr / local / bin이 경로에서 첫 번째 임에도 불구하고 mercurial이 여전히 시스템 파이썬을 참조하고 있다는 것입니다.

/usr/local/bin:usr/local/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:~/Develop:/usr/local/git/bin: No such file or directory

So, what I'm suggesting is updating the python install with brew and then reinstalling whatever other packages you depend on.

참고URL : https://stackoverflow.com/questions/19531969/segmentation-fault-11-in-os-x

반응형