Vim -p: поймал смертельный сигнал SEGV?

12

Я получаю эту проблему, когда я запускаю Vim с -pопцией. Предположим, я начал с

vim -p first.txt second.txt

Затем после редактирования first.txtя перехожу к second.txtиспользованию gt. Я нажимаю клавиши ggи Gснова. Это приводит к ошибке

Vim: Caught deadly signal SEGV

С этого момента Vim не отвечает ни на один сигнал, в том числе Ctrl D. Я могу закрыть эту сессию только убив терминал.

Эта проблема возникает только тогда, когда я вызываю Vim с -pопцией. Если я first.txtсначала открою, а затем использую, :tabeчтобы открыть second.txt, эта проблема не возникает.

Есть идеи, почему это может произойти?


Выход vim --version:

VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jan  2 2014 19:40:46)
Included patches: 1-52
Modified by pkg-vim-maintainers@lists.alioth.debian.org
Compiled by buildd@
Huge version with GTK2-GNOME GUI.  Features included (+) or not (-):
+acl             +farsi           +mouse_netterm   +syntax
+arabic          +file_in_path    +mouse_sgr       +tag_binary
+autocmd         +find_in_path    -mouse_sysmouse  +tag_old_static
+balloon_eval    +float           +mouse_urxvt     -tag_any_white
+browse          +folding         +mouse_xterm     +tcl
++builtin_terms  -footer          +multi_byte      +terminfo
+byte_offset     +fork()          +multi_lang      +termresponse
+cindent         +gettext         -mzscheme        +textobjects
+clientserver    -hangul_input    +netbeans_intg   +title
+clipboard       +iconv           +path_extra      +toolbar
+cmdline_compl   +insert_expand   +perl            +user_commands
+cmdline_hist    +jumplist        +persistent_undo +vertsplit
+cmdline_info    +keymap          +postscript      +virtualedit
+comments        +langmap         +printer         +visual
+conceal         +libcall         +profile         +visualextra
+cryptv          +linebreak       +python          +viminfo
+cscope          +lispindent      -python3         +vreplace
+cursorbind      +listcmds        +quickfix        +wildignore
+cursorshape     +localmap        +reltime         +wildmenu
+dialog_con_gui  +lua             +rightleft       +windows
+diff            +menu            +ruby            +writebackup
+digraphs        +mksession       +scrollbind      +X11
+dnd             +modify_fname    +signs           -xfontset
-ebcdic          +mouse           +smartindent     +xim
+emacs_tags      +mouseshape      -sniff           +xsmp_interact
+eval            +mouse_dec       +startuptime     +xterm_clipboard
+ex_extra        +mouse_gpm       +statusline      -xterm_save
+extra_search    -mouse_jsbterm   -sun_workshop    +xpm
   system vimrc file: "$VIM/vimrc"
     user vimrc file: "$HOME/.vimrc"
 2nd user vimrc file: "~/.vim/vimrc"
      user exrc file: "$HOME/.exrc"
  system gvimrc file: "$VIM/gvimrc"
    user gvimrc file: "$HOME/.gvimrc"
2nd user gvimrc file: "~/.vim/gvimrc"
    system menu file: "$VIMRUNTIME/menu.vim"
  fall-back for $VIM: "/usr/share/vim"
Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_GTK  -pthread -I/usr/include/gtk-2.0 -I/usr/lib/i386-linux-gnu/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib/i386-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/libpng12 -I/usr/include/harfbuzz   -pthread -DORBIT2=1 -D_REENTRANT -I/usr/include/libgnomeui-2.0 -I/usr/include/libart-2.0 -I/usr/include/gconf/2 -I/usr/include/gnome-keyring-1 -I/usr/include/libgnome-2.0 -I/usr/include/libbonoboui-2.0 -I/usr/include/libgnomecanvas-2.0 -I/usr/include/gtk-2.0 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/gnome-vfs-2.0 -I/usr/lib/i386-linux-gnu/gnome-vfs-2.0/include -I/usr/include/dbus-1.0 -I/usr/lib/i386-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/i386-linux-gnu/glib-2.0/include -I/usr/include/orbit-2.0 -I/usr/include/libbonobo-2.0 -I/usr/include/bonobo-activation-2.0 -I/usr/include/libxml2 -I/usr/include/pango-1.0 -I/usr/include/gail-1.0 -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/atk-1.0 -I/usr/lib/i386-linux-gnu/gtk-2.0/include -I/usr/include/cairo -I/usr/include/gio-unix-2.0/ -I/usr/include/pixman-1 -I/usr/include/libpng12     -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1     -I/usr/include/tcl8.6  -D_REENTRANT=1  -D_THREAD_SAFE=1  -D_LARGEFILE64_SOURCE=1  
Linking: gcc   -L. -Wl,-Bsymbolic-functions -Wl,-z,relro -rdynamic -Wl,-export-dynamic -Wl,-E  -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,--as-needed -o vim   -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfontconfig -lgobject-2.0 -lglib-2.0 -lfreetype     -lgnomeui-2 -lSM -lICE -lbonoboui-2 -lgnomevfs-2 -lgnomecanvas-2 -lgnome-2 -lpopt -lbonobo-2 -lbonobo-activation -lORBit-2 -lart_lgpl_2 -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfontconfig -lfreetype -lgconf-2 -lgthread-2.0 -lgmodule-2.0 -lgobject-2.0 -lglib-2.0   -lSM -lICE -lXpm -lXt -lX11 -lXdmcp -lSM -lICE  -lm -ltinfo -lnsl  -lselinux  -lacl -lattr -lgpm -ldl  -L/usr/lib -llua5.2 -Wl,-E  -fstack-protector -L/usr/local/lib  -L/usr/lib/perl/5.18/CORE -lperl -ldl -lm -lpthread -lcrypt -L/usr/lib/python2.7/config-i386-linux-gnu -lpython2.7 -lpthread -ldl -lutil -lm -Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions  -L/usr/lib/i386-linux-gnu -ltcl8.6 -ldl -lz -lpthread -lieee -lm -lruby-1.9.1 -lpthread -lrt -ldl -lcrypt -lm  -L/usr/lib   

Выход uname -a:

Linux nitish 3.13.0-45-generic #74-Ubuntu SMP Tue Jan 13 19:37:48 UTC 2015 i686 i686 i686 GNU/Linux

Основываясь на комментариях @Carpetsmoker, я обнаружил, что проблема в моем .vimrcфайле. Поэтому я проверил команду, вызвавшую проблему, с некоторыми частями .vimrcкомментария. Наконец я узнал, что проблема с линией

set columns=1000

Как такая невинная команда может вызвать эту проблему? :help columnsне дает никакой полезной информации относительно этого.

nitishch
источник
2
какой vim (и уровень патча) вы используете? (как вывод vim --version), а какая ОС? В любом случае, было бы неплохо обновить vim. Если вы на Mac и использовать рубин плагины (например , команды-T), вы можете переустановить их и / или убедиться , что ВИМ использует систему рубин , а не РВМ рубин (который , кажется, вызвали проблемы для некоторых людей)
davidlowryduda
1
Вы можете начать Vim , как vim -u NONE -p first.txt second.txt... Это позволит предотвратить загрузку файла vimrc.
Мартин Tournoij
@hatter Vim был установлен или скомпилирован? Вы можете обновить его до 7.4 и посмотреть , если это помогает.
kenorb
@kenorb Vim был установлен.
нитищ
@Carpetsmoker Это сработало !! Это определенно указывает, что есть проблема в .vimrcфайле?
нитищ

Ответы:

6

Сигнал SEGV, также известный как segfault, почти всегда происходит из-за ошибки в программе, которую вы запускаете - в данном случае, vim. (Другими причинами являются такие вещи, как неисправное оборудование, или однажды в голубой луне, ошибки ядра).

Так что, действительно, вам нужно сообщить об ошибке. :help bug-reportsпредоставляет инструкции о том, как сообщить об ошибке. Похоже, у вас уже есть минимальный набор шагов для воспроизведения проблемы, так что это большая часть работы там. Возможно, вам следует сначала протестировать более новую версию Vim, просто чтобы убедиться, что она еще не исправлена.

derobert
источник
Я использую Vim 7.4. Официальный сайт сообщает, что это последняя версия.
нитищ
@ Шляпник, вы применили меньше патчей, чем доступно.
Дероберт
Он работает на Debian, что объясняет это :-)
Мартин Турной
@Carpetsmoker Я использую Debian и прошёл патч 488 ... Я не уверен, почему у OP старше. Wheezy (текущий выпуск) имеет 7.3, поэтому OP не использует это. Unstable, Jessie и Wheezy-Backports имеют 7.4 патч 488. (Учитывая, что 640 является текущим, так что он все еще несколько стар.)
derobert
3

Если ваш vim падает из-за ошибки сегментации , это указывает на нарушение доступа к памяти, которое вызвано либо ошибкой программного обеспечения, либо проблемами с оборудованием.

Если это происходит неоднократно, вы должны сделать по порядку:

  1. Отключите плагины, запустив: vim -u NONEи посмотрите, поможет ли это.
  2. Обновите vim до последней стабильной версии.
  3. Обновите vim до последней версии для разработчиков.
  4. При необходимости дважды проверьте одну и ту же версию vim на другом компьютере (возможно, это вызвано проблемами с оборудованием).
  5. Попробуйте запустить vimв отладчике, например: gdb vimи проверьте обратную трассировку (после SEGV, в gdb: введите btили bt full).
  6. Если обратная трассировка не имеет символов, вы должны перекомпилировать vim, чтобы включить их.
  7. Если вы завершили обратную трассировку, проверьте наличие подобных проблем или сообщите о новой ошибке в баг-трекере vim (для простого vim) или проверьте :help bugs. Если у вас другая версия vim (например, gVim, MacVim, NeoVim), пожалуйста, сообщите об этом нужным сопровождающим.
kenorb
источник
2
Это происходит только в моей системе. Не бывает с -u NONE. Кажется , что линия set columns=1000в .vimrcвиновнике.
нитищ
0

Ошибки сегментации также могут быть связаны с взаимодействующими серверами, такими как NetBeans и тем, autocmdчто делает недействительным буфер (например, BufNewFileоперации), который другая программа (плагин, ...) ожидает (или аналогичную) в .vimконфигурации, попробуйте комментировать эти строки, например, в .vimrc.

Типичное сообщение об ошибке:

missing ! or / in <number>:<command>

где commandможет быть напримерeditFile

Radagast
источник