Vim -p: catturato segnale mortale SEGV?


12

Ottengo questo problema quando avvio Vim con l' -popzione. Supponiamo che io abbia iniziato con

vim -p first.txt second.txt

Poi, dopo la modifica first.txtmi trasferisco in second.txtuso gt. Premo i tasti gge di Gnuovo. Questo produce l'errore

Vim: Caught deadly signal SEGV

Da questo punto, Vim non risponde a nessun segnale incluso Ctrl D. Posso chiudere questa sessione solo uccidendo il terminale.

Questo problema sorge solo quando invoco Vim con l' -popzione. Se apro first.txtprima e poi utilizzo :tabeper aprire second.txt, questo problema non si presenta.

Qualche idea sul perché ciò possa accadere?


Uscita di 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   

Uscita di 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

Sulla base dei commenti di @Carpetsmoker, ho scoperto che il problema è dovuto al mio .vimrcfile. Quindi ho controllato il problema che causava il comando con alcune parti del .vimrcfile commentate. Alla fine ho scoperto che il problema riguarda la linea

set columns=1000

Come può un comando così innocente causare questo problema? :help columnsnon ha fornito alcuna informazione utile al riguardo.


2
quale vim (e livello di patch) stai usando? (come vim --version output) e quale sistema operativo? Indipendentemente da ciò, sarebbe una buona idea aggiornare vim. Se sei su un Mac e usi plug-in ruby ​​(come command-T), potresti reinstallarli e / o assicurarti che vim stia usando il sistema ruby ​​e non rvm ruby ​​(che sembra aver causato problemi ad alcune persone)
davidlowryduda

1
Puoi avviare vim come vim -u NONE -p first.txt second.txt... Ciò impedirà il caricamento del file vimrc.
Martin Tournoij,

@hatter Il vim è stato installato o compilato? Puoi aggiornarlo a 7.4 e vedere se questo aiuta.
Kenorb,

@kenorb Vim è stato installato.
nitishch,

@Carpetsmoker Ha funzionato !! Questo indica definitivamente che c'è un problema nel .vimrcfile?
nitishch,

Risposte:


6

Il segnale SEGV, noto anche come segfault, è quasi sempre dovuto a un bug nel programma in esecuzione, in questo caso, vim. (Altre cause sono cose come hardware difettoso, o una volta in una luna blu, bug del kernel).

Quindi, davvero, devi segnalare un bug. :help bug-reportsfornisce istruzioni su come segnalare un bug. Sembra che tu abbia già una serie minima di passaggi per riprodurre il problema, quindi è la maggior parte del lavoro lì. Probabilmente dovresti testare prima una versione più recente di Vim, solo per assicurarti che non sia già stato riparato.


Sto usando Vim 7.4. Il sito ufficiale dice che questa è l'ultima versione.
nitishch,

@hatter hai applicato meno patch di quelle disponibili.
derobert,


@Carpetsmoker Sto eseguendo Debian e ho tramite la patch 488 ... Non sono sicuro del perché OP sia più vecchio. Wheezy (versione attuale) ha 7.3, quindi OP non lo sta usando. Unstable, Jessie e Wheezy-Backports hanno tutti la patch 7.48 488. (Dato che 640 è attuale, quindi è ancora un po 'vecchio.)
derobert

3

Se il tuo vim si arresta in modo anomalo a causa di un errore di segmentazione , ciò indica una violazione dell'accesso alla memoria causata da bug del software o problemi hardware.

Se ciò accade ripetutamente, dovresti fare in ordine:

  1. Disabilita i plugin eseguendo: vim -u NONEe vedi se questo aiuta.
  2. Aggiorna il tuo vim all'ultima versione stabile.
  3. Aggiorna il tuo vim all'ultima versione di sviluppo.
  4. Opzionalmente ricontrolla la stessa versione di vim su macchine diverse (forse è causata da problemi hardware).
  5. Prova a eseguire il vimdebugger, ad esempio: gdb vime controlla la backtrace (dopo SEGV, in gdb: type bto bt full).
  6. Se la backtrace non ha simboli, devi ricompilare il tuo vim per includerli.
  7. Se hai completato il backtrace, verifica la presenza di problemi simili o segnala un nuovo bug nel tracker bug di Vim (per VIM semplice) o verifica la presenza di :help bugs. Se hai una versione diversa di vim (come gVim, MacVim, NeoVim), per favore segnalalo ai manutentori giusti.

2
Questo succede solo sul mio sistema. Non succede con -u NONE. Sembra che la linea set columns=1000in .vimrcè il colpevole.
nitishch,

0

Gli errori di segmentazione possono anche essere collegati a server che interagiscono come netbeans e autocmdche invalida un buffer (ad es. BufNewFileOperazioni) che un altro programma (plugin, ...) si aspetta (o simile) nella .vimconfigurazione, prova a commentare quelle righe in es .vimrc.

Il messaggio di errore tipico è:

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

dove commandpuò essere ad eseditFile

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.