Python/Chrome/Java(Linux Mint)出现分段错误

7

当我在命令行中运行python(不带任何参数)时,会出现分段错误。

错误信息如下:

$ python
[1]    11094 segmentation fault  python2.7

还有Linux内核陷阱:

$ dmesg
traps: python2[10923] general protection ip:4db605 sp:7fffe4b29e70 error:0 in  python2.7[400000+2ba000

$gdb python
Program received signal SIGSEGV, Segmentation fault.
0x00000000004db605 in PyDict_SetItemString ()
(gdb) backtrace
#0  0x00000000004db605 in PyDict_SetItemString ()
#1  0x000000000044719b in _PyExc_Init ()
#2  0x000000000046928e in Py_InitializeEx ()
#3  0x0000000000469db3 in Py_Main ()
#4  0x00007ffff7816de5 in __libc_start_main () from /lib/x86_64-linux-gnu/libc.so.6
#5  0x00000000005735fe in _start ()

objdump -d /usr/bin/python2.7 | less 的选定部分:

4db5f7:       0f 84 a6 02 00 00       je     4db8a3 <PyDict_SetItemString+0x323>
4db5fd:       4d 8b 48 08             mov    0x8(%r8),%r9
4db601:       41 83 00 01             addl   $0x1,(%r8)
4db605:       4d 8b 11                mov    (%r9),%r10
4db608:       4d 89 cc                mov    %r9,%r12
4db60b:       4d 85 d2                test   %r10,%r10
4db60e:       4d 89 50 08             mov    %r10,0x8(%r8)

我的电脑配置如下:

  • Linux Mint 16(64位)
  • 内存:8GB(6 GB空闲)
  • 我昨晚在SSD(64GB)上安装了Mint,还有1TB的HDD
  • CPU:Core I5 4670k
  • Linux内核:Linux mint 3.11.0-12-generic # 19-Ubuntu SMP Wed Oct 9 16:20:46 UTC 2013 x86_64 x86_64 x86_64 GNU / Linux

我试图在我的计算机上安装新的Kubuntu 14.04(或者升级到Mint 17),但不幸的是分发崩溃了。

请问有人能告诉我为什么会出现这个错误吗?我该怎么解决呢?

我想知道是否有人可以帮我解决这个问题。(我知道什么是segsegv,但我不知道为什么在新安装的Linux中会出现这个错误)

谷歌浏览器,Java和其他程序也存在同样的问题。

谢谢


这是我见过的最有信息量的非编程Python问题,虽然与C/C++语言标签无关(它们并不 真正 适用),但赞扬你抓住了难题。我也对源代码和解决方案感兴趣(没有特别的原因)。 - WhozCraig
有趣。当你运行脚本而不是shell时,它是否仍然会出现段错误?iPython是否会出现段错误?你是否使用任何特殊标志构建可执行文件?假设你进行一些C编程--你的系统上是否有任何可能干扰malloc的东西--例如备用实现?我知道至少在Ubuntu上,python被操作系统使用--你是否遇到随机可执行文件出现段错误或来自Mint的频繁错误消息的问题?你所说的“示例问题”是什么意思? - Patrick Collins
@PatrickCollins 当我发送这篇文章时,我的浏览器(Google-Chrome)已经崩溃了8次,并显示相同的陷阱消息。当我尝试保存Android虚拟设备时,也会出现segsegv错误。我尝试安装ipython,但由于pycompile崩溃而停止安装。这个问题每次都会发生。 - Ocean
@Ocean 你能否执行 apt-get install python3 然后看一下是否可以工作?除非你做了一些奇怪的事情,否则这似乎可能是 Python 的一个 bug -- 你可能需要提交一个 bug 报告。 - Patrick Collins
@Ocean,你尝试过运行memtest和fsck来排除可能的硬件问题吗?在安装Mint之前,这个硬件有没有出现过任何问题? - Patrick Collins
显示剩余3条评论
1个回答

1
这并不是解释你的Python目前为什么崩溃的原因 - 除非你的系统有一些奇怪的配置,你没有提到,否则它似乎是Python的一个漏洞 - 但这里有一个可能的解决方法:
我只能猜测在你安装Python时出现了某些损坏。理想的解决方案是卸载和重新安装,但这很麻烦,因为有大量的系统关键程序依赖于Python。因此,你可以按照这里的说明查找你删除的所有内容并重新安装它。这是我的建议:
  1. sudo apt-get purge python2.7

    你将会看到要删除的长列表,不用担心,让它们被删除就好。

  2. sudo apt-get install python2.7

    重新安装 Python。现在,重新安装你之前删除的旧软件包:

  3. grep Remove /var/log/apt/history.log | tail -n1 | cut -d: -f2- | sed "s/(.*)//g" | sed "s/:your_processor//g"

    这是你最近删除的软件包列表,现在可以使用 apt-get 重新安装。其中 :your_processor 是由 apt 列出的体系结构,在我的系统中是 :amd64

请注意,这是一项相当危险的操作。

此外,看到你的评论 -- 似乎你的RAM有问题。这是硬件问题。重新安装可能会解决问题,但问题会再次出现 -- 更换有问题的内存条。如果这是一台新机器,它很可能会被保修覆盖。还要检查一下插槽中是否有灰尘等物质,假设您自己组装了机器。这里是一个Super User帖子,解释为什么memtest失败很重要

我尝试了您的指示,但是由于dpkg返回错误,删除被停止了。我已经尝试使用GRUB_BADRAM="0xc0f00000,0xfff00000"选项跳过坏的RAM,但它没有起作用。 - Ocean
@Ocean,你的硬件出现了问题--你需要更换有问题的内存条,没有其他解决办法。 - Patrick Collins
(欢迎来到SO!您的问题写得非常好,表现出了您的努力。请务必投票并接受您认为有帮助的答案。) - Patrick Collins

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接