Vim -p: ¿Capturó la señal mortal SEGV?


12

Me sale este problema cuando inicio Vim con la -popción. Supongamos que empecé con

vim -p first.txt second.txt

Luego, después de editar first.txt, paso a second.txtusar gt. Presiono las teclas ggy Gotra vez. Esto produce el error

Vim: Caught deadly signal SEGV

Desde este punto, Vim no responde a ninguna señal incluida Ctrl D. Solo puedo cerrar esta sesión matando la terminal.

Este problema surge solo cuando invoco a Vim con la -popción. Si abro first.txtprimero y luego uso :tabepara abrir second.txt, este problema no surge.

¿Alguna idea de por qué esto podría ocurrir?


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

Salida 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

Según los comentarios de @Carpetsmoker, descubrí que el problema se debe a mi .vimrcarchivo. Así que verifiqué el problema que causaba el comando con algunas partes del .vimrcarchivo comentadas. Finalmente descubrí que el problema es con la línea

set columns=1000

¿Cómo puede un comando tan inocente causar este problema? :help columnsno dio ninguna información útil sobre esto.


2
¿Qué vim (y nivel de parche) estás usando? (como vim --version output), y qué sistema operativo? De todos modos, sería una buena idea actualizar vim. Si está en una Mac y usa complementos de ruby ​​(como command-T), puede reinstalarlos y / o asegurarse de que vim esté usando el sistema ruby ​​y no rvm ruby ​​(que parece haber causado problemas a algunas personas)
davidlowryduda

1
Puede iniciar vim como vim -u NONE -p first.txt second.txt... Esto evitará cargar su archivo vimrc.
Martin Tournoij

@hatter ¿Se instaló o compiló el vim? ¿Puede actualizarlo a 7.4 y ver si eso ayuda?
kenorb

@kenorb Vim fue instalado.
nitishch

@Carpetsmoker ¡Funcionó! ¿Esto definitivamente señala que hay un problema en el .vimrcarchivo?
nitishch

Respuestas:


6

La señal SEGV, también conocida como segfault, casi siempre se debe a un error en el programa que está ejecutando, en este caso, vim. (Otras causas son cosas como hardware defectuoso, o una vez en una luna azul, errores del kernel).

Entonces, realmente, debes informar un error. :help bug-reportsproporciona instrucciones sobre cómo informar un error. Parece que ya tiene un conjunto mínimo de pasos para reproducir el problema, por lo que esa es la mayor parte del trabajo allí. Sin embargo, probablemente debería probar primero una versión más nueva de Vim, solo para asegurarse de que aún no se haya solucionado.


Estoy usando Vim 7.4. El sitio web oficial dice que esta es la última versión.
nitishch

@hatter tiene menos parches aplicados de los que están disponibles.
derobert

Está ejecutando Debian, así que eso explica que :-)
Martin Tournoij

@Carpetsmoker Estoy ejecutando Debian y tengo el parche 488 ... No estoy seguro de por qué OP tiene más antigüedad. Wheezy (versión actual) tiene 7.3, por lo que OP no está usando eso. Unstable, Jessie y Wheezy-Backports tienen el parche 7.4 488 (dado que 640 es actual, así que todavía es algo viejo)
Derobert

3

Si su vim falla debido a un fallo de segmentación , eso indica una infracción de acceso a la memoria causada por un error de software o problemas de hardware.

Si esto sucede repetidamente, debe hacer en orden:

  1. Deshabilite los complementos ejecutando: vim -u NONEy vea si eso ayuda.
  2. Actualice su vim a la última versión estable.
  3. Actualice su vim a la última versión de desarrollo.
  4. Opcionalmente, verifique la misma versión de vim en una máquina diferente (tal vez sea por problemas de hardware).
  5. Intente ejecutar vimbajo depurador, por ejemplo: gdb vimy verifique la traza inversa (después de SEGV, en gdb: tipo bto bt full).
  6. Si la traza inversa no tiene símbolos, debe volver a compilar su vim para incluirlos.
  7. Si ha completado el rastreo, verifique si hay problemas similares o informe un nuevo error en el rastreador de errores de vim (para vim simple) o verifique :help bugs. Si tiene una versión diferente de vim (como gVim, MacVim, NeoVim), infórmelo a los encargados de mantenimiento adecuados.

2
Esto sucede solo en mi sistema. No pasa con -u NONE. Parece que la línea set columns=1000en .vimrces el culpable.
nitishch

0

Las fallas de segmentación también pueden estar conectadas a servidores que interactúan como netbeans y autocmdque invalidan un búfer (por ejemplo, BufNewFileoperaciones) que otro programa (complemento, ...) espera (o similar) en la .vimconfiguración, intente comentar esas líneas en, por ejemplo, el .vimrc.

El mensaje de error típico es:

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

donde commandpuede ser por ejemploeditFile

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.