Arch Linux上的Python交互模式“分段错误(核心转储)”
作者:互联网
每次使用Arch Linux我尝试使用Python交互模式,无论我输入什么,我都会得到Segmentation fault(core dumped)和Python解释器退出.
我在运行Python脚本或执行以下操作时没有任何问题:
$echo "print(1+1)" | python
但是当我进入交互模式时,无论是使用python还是python2,只要输入任何命令并按回车键,解释器就会停止,然后如果我再次按回车(或任何其他键),我会收到消息Segmentation fault(core倾销)和口译员退出.
我测试安装bpython,我对python解释器的这个接口没有任何问题或错误.
我尝试了gdb,当我在gdb提示符下键入run时,我不得不按两次输入(当它刚刚停止时点击输入)然后得到:
Starting program: /usr/bin/python
Segmentation fault (core dumped)
和gdb退出.
也许这些信息很有用:
$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
解决方法:
遵循meuh建议我使用strace运行Python并查看交互式和非交互式Python之间的差异.
交互式Python读取我的〜/ .inputrc,因为它使用readline,这是导致分段错误(核心转储)的文件.
我有一个来自另一台机器(Ubuntu)的〜/ .inputrc,在其中我盲目地复制了(Ubuntu)/usr/share/doc/bash/inputrc.arrows的内容.
/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
8位键盘模式和8位ANSI模式是问题的具体原因,因此在删除它们之后一切正常.
感谢thrig指向我gdb并且足够耐心,因为我之前从未使用过该工具.与meuh一样,建议使用strace,这对我来说也是新手.我不知道从哪里开始调试,因为我只是一个喜欢学习新东西的休闲用户.伟大的社区!
标签:python,segmentation-fault,arch-linux 来源: https://codeday.me/bug/20190816/1671436.html