这是一个与 ZSH 和 python virtualenvwrapper 相关的烦人错误。我在网上找不到任何线索,所以我打算在 SU 上发一篇新帖子!
症状
- 使用 ZSH,并安装 python virtualenvwrapper(以便该
workon
命令有效) - 在 shell 中输入,
% workon <TAB>
以触发可用虚拟环境的制表符补全。 - 然后,ZSH 崩溃并且当前 shell 意外关闭。
为什么会发生这种情况?罪魁祸首是谁?zsh 还是 virtualenvwrapper?
诊断
据我所知,zsh 是可疑的,因为我们可以找到分段错误日志消息。
Segfault happend at: 0x452005 <popheap+85>: mov 0x18(%r12),%rdi PC(0x00452005) ok
有时(但很少)效果很好,但几乎总是可以在多台机器上重现。我现在要针对各种环境、zsh 版本或其他配置进行检查。
我经历过的环境:
- Linux Ubuntu 12.04.02 LTS(内核:Linux 3.2.0-54-generic x86_64)
ZSH:zsh 4.3.17-1ubuntu1
UPD1:在最新的 ZSH 5.0.2 中也可重现(从源代码配置和编译)
参考
- 来自 bitbucket 的 virtualenvwrapper 问题 #206(其中提到了该问题,由于作者在重新安装后无法重现该错误,因此其状态已解决)
谢谢。
答案1
问题似乎出在具有特定虚拟环境的系统上的 ZSH 插件“virtualenvwrapper”。例如,我手动安装,而不是使用“pip install virtualenvwrapper”。
从我的 .zshrc 中删除“virtualenvwrapper”似乎可以解决这个问题。我敢打赌,在许多情况下,使用 pip 重新安装 virtualenvwrapper 可以解决此问题。