当使用ctrl-n自动完成单词时,Vim会随机段错误

时间:2011-08-28 10:37:00

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

我正在使用mac osx附带的系统vim(7.2)(目前为10.6.7)。我主要使用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

1 个答案:

答案 0 :(得分:1)

时间

  1. 收集系统信息

    • ldd $(which vim)
    • uname -a
  2. 获得一个coredump(在linux上,你可能需要做ulimit -c unlimited

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

  4.   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