Vim -p: Pris le signal mortel SEGV?

12

J'obtiens ce problème lorsque je démarre Vim avec -poption. Supposons que j'ai commencé avec

vim -p first.txt second.txt

Ensuite, après l'édition, first.txtje passe à l' second.txtutilisation gt. J'appuie sur les touches gget Gencore. Cela produit l'erreur

Vim: Caught deadly signal SEGV

À partir de ce moment, Vim ne répond à aucun signal, y compris Ctrl D. Je ne peux fermer cette session qu'en tuant le terminal.

Ce problème ne se pose que lorsque j'invoque Vim avec -poption. Si j'ouvre d' first.txtabord et que j'utilise ensuite :tabepour ouvrir second.txt, ce problème ne se pose pas.

Des idées pourquoi cela pourrait se produire?


Sortie de vim --version:

VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jan  2 2014 19:40:46)
Included patches: 1-52
Modified by [email protected]
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   

Sortie de 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

Sur la base des commentaires de @Carpetsmoker, j'ai découvert que le problème était dû à mon .vimrcfichier. J'ai donc vérifié que le problème provoquait la commande avec certaines parties du .vimrcfichier commentées. Enfin, j'ai découvert que le problème est avec la ligne

set columns=1000

Comment un commandement si innocent peut-il causer ce problème? :help columnsn'a donné aucune information utile à ce sujet.

nitishch
la source
2
quel vim (et niveau de patch) utilisez-vous? (comme vim --version output), et quel OS? Quoi qu'il en soit, ce serait une bonne idée de mettre à jour vim. Si vous êtes sur un Mac et que vous utilisez des plugins ruby ​​(comme la commande-T), vous pouvez les réinstaller et / ou vous assurer que vim utilise le système ruby ​​et non rvm ruby ​​(ce qui semble avoir causé des problèmes à certaines personnes)
davidlowryduda
1
Vous pouvez démarrer vim en tant que vim -u NONE -p first.txt second.txt... Cela empêchera le chargement de votre fichier vimrc.
Martin Tournoij
@hatter Le vim a été installé ou compilé? Pouvez-vous le mettre à niveau vers 7.4 et voir si cela aide.
kenorb
@kenorb Vim a été installé.
nitishch
@Carpetsmoker Ça a fonctionné !! Est-ce que cela indique définitivement qu'il y a un problème dans le .vimrcfichier?
nitishch

Réponses:

6

Le signal SEGV, également connu sous le nom de défaut de segmentation, est presque toujours dû à un bogue dans le programme que vous exécutez - dans ce cas, vim. (Les autres causes sont des choses comme un matériel défectueux, ou une fois dans une lune bleue, des bugs du noyau).

Donc, vraiment, vous devez signaler un bug. :help bug-reportsfournit des instructions sur la façon de signaler un bogue. Il semble que vous ayez déjà un ensemble minimal d'étapes pour reproduire le problème, c'est donc l'essentiel du travail là-bas. Vous devriez probablement tester une version plus récente de Vim d'abord, juste pour vous assurer qu'elle n'a pas déjà été corrigée.

derobert
la source
J'utilise Vim 7.4. Le site officiel indique que c'est la dernière version.
nitishch
@hatter, vous avez appliqué moins de correctifs que ceux disponibles.
derobert
Il dirige Debian, ce qui explique que :-)
Martin Tournoij
@Carpetsmoker J'utilise Debian et j'ai le patch 488 ... Je ne sais pas pourquoi OP est plus ancien. Wheezy (version actuelle) a 7.3, donc OP ne l'utilise pas. Unstable, Jessie et Wheezy-Backports ont tous le patch 488 de 7.4. (Étant donné que 640 est à jour, c'est encore un peu ancien.)
derobert
3

Si votre vim se bloque en raison d' une erreur de segmentation , cela indique une violation d'accès à la mémoire causée par un bogue logiciel ou des problèmes matériels.

Si cela se produit à plusieurs reprises, vous devez procéder dans l'ordre:

  1. Désactivez les plugins en exécutant: vim -u NONEet voyez si cela aide.
  2. Mettez à niveau votre vim vers la dernière version stable.
  3. Mettez à niveau votre vim vers la dernière version de développement.
  4. Vérifiez éventuellement la même version de vim sur une machine différente (peut-être à cause de problèmes matériels).
  5. Essayez d'exécuter vimsous le débogueur, par exemple: gdb vimet vérifiez la trace (après SEGV, dans gdb: tapez btou bt full).
  6. Si la trace arrière n'a pas de symboles, vous devez recompiler votre vim pour les inclure.
  7. Si vous avez terminé la trace, veuillez rechercher des problèmes similaires ou signaler un nouveau bogue dans l'outil de suivi des bogues de vim (pour vim standard) ou vérifier :help bugs. Si vous avez une version différente de vim (comme gVim, MacVim, NeoVim), veuillez le signaler aux bons responsables.
Kenorb
la source
2
Cela se produit uniquement sur mon système. Ça n'arrive pas avec -u NONE. Semble la ligne set columns=1000en .vimrcest le coupable.
nitishch
0

Les erreurs de segmentation peuvent également être connectées à des serveurs en interaction comme les netbeans et autocmdqui invalident un tampon (par exemple des BufNewFileopérations) qu'un autre programme (plugin, ...) attend (ou similaire) dans la .vimconfiguration, essayez de commenter ces lignes dans par exemple le .vimrc.

Le message d'erreur typique est:

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

commandpeut être par exempleeditFile

Radagast
la source