Fallo de segmentación: 11 en OS X

Estoy obteniendo un problema en Python 3.3.2 en OSX 10.9 donde si abro Python en una ventana de terminal, sale con “Error de segmentación: 11” después de la segunda línea que ingrese, independientemente de cuáles sean los dos comandos. Por ejemplo, si entro:

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

Eso funciona bien, pero si entro:

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

luego me sale el error cuando presiono enter en la segunda línea. También puedo ejecutar un script con más de 2 líneas sin ningún problema.

Actualicé a OSX 10.9 esta tarde, así que sospecho que puede ser eso.

Sin embargo, recientemente instalé IPython (junto con varios otros paquetes) y lo he estado utilizando en los últimos días, por lo que podría ser algo más que instalé recientemente. Tuve un par de bashs fallidos de instalar PyQt donde ejecuté configure.py pero luego el comando “make” falló, lo cual también sospeché.

Intenté reinstalar Python, pero no resolvió el problema. Tanto IPython como IDLE funcionan sin problemas. Me preocupa lo que podría ser el problema subyacente.

Este es un error en la compatibilidad de readline en python, relacionado con los cambios introducidos en OSX10.9. Este fin de semana, se lanzaron los candidatos de lanzamiento para Python2.7.6 y Python3.3.3 que corrigen este error. Los enlaces de descarga están abajo.

http://python.org/download/releases/2.7.6/

http://python.org/download/releases/3.3.3/

Aquí está el problema, citando a Ned Deily, escribiendo en la lista de correo electrónico de python-dev .

El martes, Apple lanzó OS X 10.9 (también conocido como Mavericks). Ya ha habido mucho interés en ello, en parte porque Apple lo ha hecho disponible de forma gratuita y ha facilitado que los usuarios con sistemas 10.8, 10.7 y (la mayoría) 10.6 se actualicen directamente a 10.9. Desafortunadamente, hay problemas con nuestras versiones de mantenimiento actuales (3.3.2 y 2.7.5) en OS X 10.9 que requieren nuevas versiones de mantenimiento tan pronto como sea posible.

Una de ellas es fundamental porque hace que el intérprete se bloquee cuando se ejecuta en modo interactivo ( http://bugs.python.org/issue18458 ). El problema se debió a un problema de compatibilidad de larga data en la capa de compatibilidad de línea de lectura de libedit que el flujo ascendente finalmente se ha solucionado y Apple ya ha recibido el 10.9. Debido a que los instaladores de python.org se vinculan dinámicamente a libedit, la solución original en readline.c para la falla de diseño original en la indexación del historial ahora causa un fallo de seguridad en 10.9 cuando el usuario escribe el segundo comando de forma interactiva. No está bien. Ronald ideó una solución que permite que readline.so en tiempo de ejecución detecte y trabaje con cualquiera de las versiones de libedit para que sigamos teniendo compatibilidad binaria en varias versiones de OS X. Esa solución ya está disponible en los alfas 3.4.0 y está respaldada por las twigs 3.3 y 2.7, esperando su lanzamiento allí. Solo en las últimas 12 horas, se han producido al menos cuatro duplicados del problema notificado por los usuarios. He actualizado el problema original para mencionar explícitamente 10.9, ahora que ya no está bajo NDA, y para proporcionar un script descargable para usuarios sin experiencia para solucionar el problema “eliminando” readline.so. Presumiblemente, a medida que se corra la voz, habrá menos problemas duplicados abiertos, pero el impacto se mantendrá.

Tuve este problema después de actualizar a OS X 10.9 y usé el parche proporcionado en el sitio web de Python: http://bugs.python.org/issue18458#msg201087

Para usarlo, abra una sesión de terminal en Terminal.app (u otro shell), luego ingrese:

 curl -O http://bugs.python.org/file32324/patch_readline_issue_18458.sh openssl sha1 patch_readline_issue_18458.sh # the digest should be 7cb0ff57820a027dd4ca242eb2418930f8f46b4c 

entonces
sh ./patch_readline_issue_18458.sh

Ingrese su contraseña si se le solicita

Tuve este problema Cambiar el chunksize de chunksize en mi analizador csv a 100 eliminó el error.

Me encontré con errores de ‘falla de segmentación 11’ similares pero para mí estaba usando mercurial (hg)

Esto intentaba usar Python 2.7.8 instalado a través del instalador .mpkg y pip instalar mercurial en OS X 10.9.5

Pensé que actualizar a 2.7.8 habría resuelto esto, pero parecía que Mercurial todavía estaba buscando el Sistema / Biblioteca / Frameworks / Python.framework / Versions / 2.7

Incluso después de intentar seguir este consejo ligeramente imprudente, las cosas aún no funcionaban. Yo correría

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

obtendría ‘falla de segmentación 11’

El primer par de líneas del rastro de stack apunta a esto:

 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 

Al final, mi solución parece provenir de (re) instalar python con homebrew y usarlo para obtener la versión 2.7.8 (a partir de diciembre de 2014)

Luego reinstalé mercurial con brew install mercurial que parece haber resuelto las dependencias donde se produjo esto. Ojalá entendiera mejor lo que estaba sucediendo con la falla de Seg, pero no pude llegar al fondo.

La mejor conjetura que todavía tengo es que mercurial seguía haciendo referencia al sistema python a pesar de que 2.7.8 se instaló correctamente y usr / local / bin se ubicó primero en la ruta

/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 existe tal archivo o directorio

Entonces, lo que sugiero es actualizar la instalación de python con brew y luego reinstalar cualquier otro paquete en el que dependa.