Python/Chrome/Java下的段错误(Linux Mint)
当我在命令行中运行 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 个回答
这段话并不是在解释为什么你的 Python 会崩溃——除非你系统上有一些奇怪的配置没有提到,否则这看起来像是 Python 的一个 bug——不过这里有一个可能的解决办法:
我只能猜测在你安装 Python 的时候,某些东西可能被损坏了。理想的解决方案是卸载然后重新安装,但这很麻烦,因为有很多系统关键程序依赖于 Python。所以你可以按照 这里的说明 找到你删除的所有东西并重新安装。以下是我的建议:
sudo apt-get purge python2.7
你会看到一长串即将被删除的软件包,没关系,允许它们被删除。
sudo apt-get install python2.7
重新安装 Python。现在,重新安装你之前删除的旧软件包:
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 的帖子,解释了为什么内存测试失败是个大问题。