Modo Interativo Python no Arch Linux “Falha de segmentação (núcleo despejado)”

2

Usando o Arch Linux toda vez que tento usar o modo interativo do Python, não importa o que eu digite, recebo Segmentation fault (core dumped) e o interpretador do Python sai.

Eu não tenho nenhum problema em executar scripts Python ou fazer algo como:

$ echo "print(1+1)" | python

Mas quando entro no modo interativo, seja com python ou python2 , assim que digito qualquer comando e pressiono enter, o intérprete é interrompido e, se eu pressionar enter novamente (ou qualquer outra tecla) obtenha a mensagem Segmentation fault (core dumped) e o interpretador sai.

Eu testo a instalação do bpython e não tenho nenhum problema ou erro com esta interface para o interpretador python.

Eu tentei gdb e quando eu digite run no prompt gdb eu tive que pressionar enter duas vezes (quando apertei enter uma vez que acabou de parar) e então peguei:

Starting program: /usr/bin/python
Segmentation fault (core dumped)

e gdb saem.

Talvez essa informação seja útil:

$ which python
/usr/bin/python

$ which python2
/usr/bin/python2

$ python --version
Python 3.6.1

$ python2 --version
Python 2.7.13

$ uname -a
Linux archimiro 4.11.6-3-ARCH #1 SMP PREEMPT Thu Jun 22 12:21:46 CEST 2017 x86_64 GNU/Linux
    
por archemiro 26.06.2017 / 23:34

1 resposta

2

Seguindo meuh sugestão Eu corri o Python com strace e observei as diferenças entre interativo e não interativo Python.

O Python interativo leu meu ~/.inputrc , pois usa readline , e isso foi o arquivo que estava causando o Segmentation fault (core dumped) .

Eu tinha um ~/.inputrc que veio de outra máquina (Ubuntu) e dentro dele copiei cegamente o conteúdo do (Ubuntu) /usr/share/doc/bash/inputrc.arrows .

O conteúdo de /usr/share/doc/bash/inputrc.arrows é:

# This file controls the behaviour of line input editing for
# programs that use the Gnu Readline library.
#
# Arrow keys in keypad mode
#
"\C-[OD"        backward-char
"\C-[OC"        forward-char
"\C-[OA"        previous-history
"\C-[OB"        next-history
#
# Arrow keys in ANSI mode
#
"\C-[[D"        backward-char
"\C-[[C"        forward-char
"\C-[[A"        previous-history
"\C-[[B"        next-history
#
# Arrow keys in 8 bit keypad mode
#
"\C-M-OD"       backward-char
"\C-M-OC"       forward-char
"\C-M-OA"       previous-history
"\C-M-OB"       next-history
#
# Arrow keys in 8 bit ANSI mode
#
"\C-M-[D"       backward-char
"\C-M-[C"       forward-char
"\C-M-[A"       previous-history
"\C-M-[B"       next-history

O 8 bit keypad mode e o 8 bit ANSI mode foram a causa específica do problema, portanto, depois de removê-los, tudo funciona bem.

Obrigado ao thrig por me indicar gdb e ser paciente o suficiente, pois nunca usei essa ferramenta antes. O mesmo com meuh que sugeriu usar strace , que também era novo para mim. Eu não tinha ideia de onde começar a depuração, pois sou apenas um usuário casual que gosta de aprender coisas novas. Ótima comunidade!

    
por 28.06.2017 / 00:11