Vim случайным образом завершает работу при автозаполнении слова с помощью ctrl-n - PullRequest
0 голосов
/ 28 августа 2011

Я использую систему vim (7.2), которая поставляется с Mac OSX (в настоящее время 10.6.7).Я занимаюсь разработкой rails главным образом с помощью rails.vim.

Случайным образом, когда я пытаюсь автоматически завершить слово с помощью ctrl-n, vim вызывает segfault и завершается.Есть идеи, что вызывает это?Или какие-нибудь идеи о том, как я могу начать изучать причины этого?Я не могу заставить его аварийно завершить работу, но это довольно часто.

Вот краткий видеоролик о том, что отображается в консольном приложении 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 Ответ

1 голос
/ 28 августа 2011

Время до

  1. сбора системной информации

    • ldd $(which vim)
    • uname -a
  2. получить coredump (в 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

Отправьте соответствующий вывод в ошибки vimlist (для подробных шагов выполните :he bugs в vim).

Конечно, вывод трассировок стека значительно улучшится после установки символов отладки с пакетами для vim (иэто зависимости).Я не знаю, как это сделать на Mac, sry

...