系统相关
首页 > 系统相关> > Arch Linux上的Python交互模式“分段错误(核心转储)”

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