Python/Chrome/Java下的段错误(Linux Mint)

7 投票
1 回答
1883 浏览
提问于 2025-04-18 08:36

当我在命令行中运行 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(有6GB是空闲的)
  • 我在SSD(64GB)上安装了Mint,就在昨晚,还有1TB的硬盘
  • 处理器: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),但不幸的是,安装过程中崩溃了。

有人能告诉我,为什么会出现这个错误吗?我该如何修复它?

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

同样的问题也出现在Google Chrome、Java和其他程序上。

谢谢

1 个回答

1

这段话并不是在解释为什么你的 Python 会崩溃——除非你系统上有一些奇怪的配置没有提到,否则这看起来像是 Python 的一个 bug——不过这里有一个可能的解决办法:

我只能猜测在你安装 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"

    这会列出你最近删除的软件包,你可以用这些来重新安装。:your_processor 是 apt 列出的架构,对我来说是 :amd64

要注意,这个操作相对危险。

另外,看到你的评论——看起来你的内存有问题。这是硬件问题。重新安装可能会解决,但问题可能会再次出现——建议更换有问题的内存条。如果这是台新机器,可能会在保修范围内。还要检查一下插槽里有没有灰尘等,假如你是自己组装的机器。这里有一篇 Super User 的帖子,解释了为什么内存测试失败是个大问题

撰写回答