【问题标题】:Vim segfaults randomly when autcompleting a word with ctrl-n使用 ctrl-n 自动完成单词时,Vim 会随机出现段错误
【发布时间】:2011-08-28 10:36:59
【问题描述】:

我使用的是mac osx(目前是10.6.7)自带的系统vim(7.2)。我主要用 rails.vim 做 Rails 开发。

随机地,当我尝试使用 ctrl-n 自动完成一个单词时,vim 会出现段错误并退出。任何想法是什么原因造成的?或者关于如何开始调查导致这种情况的任何想法?我无法让它可靠地崩溃,但它经常发生。

这是 mac 控制台应用程序中显示内容的短片

Process:         vim [34386]
Path:            /usr/bin/vim
Identifier:      vim
Version:         ??? (???)
Code Type:       X86-64 (Native)
Parent Process:  zsh [34284]

Date/Time:       2011-08-28 15:22:56.168 +0800
OS Version:      Mac OS X 10.6.7 (10J869)
Report Version:  6

Exception Type:  EXC_BAD_ACCESS (SIGABRT)
Exception Codes: KERN_PROTECTION_FAILURE at 0x0000000100500000
Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Application Specific Information:
*** error for object 0x1004fa928: incorrect checksum for freed object - object was probably modified after being freed.


Thread 0 Crashed:  Dispatch queue: com.apple.main-thread
0   libSystem.B.dylib               0x00007fff832af5d6 __kill + 10
1   vim                             0x0000000100119eb3 0x100000000 + 1154739
2   libSystem.B.dylib               0x00007fff832c166a _sigtramp + 26
3   libSystem.B.dylib               0x00007fff832af5d6 __kill + 10
4   libSystem.B.dylib               0x00007fff8334fcd6 abort + 83
5   libSystem.B.dylib               0x00007fff8333e90d szone_error + 519
6   libSystem.B.dylib               0x00007fff83265d2b tiny_malloc_from_free_list + 144
7   libSystem.B.dylib               0x00007fff83264fdd szone_malloc_should_clear + 242
8   libSystem.B.dylib               0x00007fff83264eaa malloc_zone_malloc + 82
9   libSystem.B.dylib               0x00007fff832631a8 malloc + 44
10  vim                             0x0000000100099826 0x100000000 + 628774

【问题讨论】:

  • 我猜你首先需要更新。你可以花很多时间找出 bug 的位置......然后意识到它已在最新的 vim 中修复。
  • @ZyX 感谢您的建议。我对 vim 7.3.266 也有同样的错误?该错误似乎与我有现有交换文件时有关。
  • @Brand:你能详细说明一下吗?也许发布您自己的问题并链接它?或者,您可以设置赏金
  • 此处相同 - 始终出现段错误

标签: ruby-on-rails macos vim crash segmentation-fault


【解决方案1】:

时间到

  1. 收集系统信息

    • ldd $(which vim)
    • uname -a
  2. 获取核心转储(在 linux 上,您可能需要执行 ulimit -c unlimited

  3. 或者,在调试器中运行 vim

.

  gdb $(which vim)
  (gdb) break main
  (gdb) run file1.txt
  (gdb) break abort
  (gdb) break assert

(想想其他要监控的事情)

接收断点/信号时:

  (gdb) bt
  (gdb) info threads
  (gdb) thread apply all bt

  (gdb) bt full
  (gdb) thread apply all bt full

将相关输出发送到 vim 错误列表(在 vim 中执行 :he bugs 了解详细步骤)。

当然,一旦您将调试符号与 vim 包(及其依赖项)一起安装,堆栈跟踪的输出将大大改善。我不知道如何在 Mac 上做到这一点,sry

【讨论】:

  • 这是一个很好的答案,但没有人需要对旧版本的 vim 进行回溯。
  • @ZyX:谢谢;请注意 ubuntu lucid (LTS) 仍然随 7.2 提供;此外,我不认为这是一个纯粹的 vim 错误 - 因此不要预期它会在此期间得到修复。我在考虑 ABI/库冲突。 Ctrl-N 样式完成是,现在应该经过很好的测试
  • 这不是一个真正的答案,是吗?我和 Brand 有同样的问题,而且我完全不知所措……尤其是因为我可以连续数周而 Vim 不崩溃
  • @iain 我刚刚找到了这个帖子:code.google.com/p/macvim/issues/detail?id=370,它建议您可以从 brew 安装 32 位版本。据说这对其他人来说效果很好
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-10
  • 2012-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多