Vim -p: Tödliches Signal SEGV gefangen?

11

Ich bekomme dieses Problem, wenn ich Vim mit -pOption starte . Angenommen, ich habe mit angefangen

vim -p first.txt second.txt

Dann gehe first.txtich nach der Bearbeitung zur second.txtVerwendung über gt. Ich drücke die Tasten ggund noch Geinmal. Dies erzeugt den Fehler

Vim: Caught deadly signal SEGV

Ab diesem Zeitpunkt reagiert Vim nicht mehr auf ein Signal, einschließlich Ctrl D. Ich kann diese Sitzung nur schließen, indem ich das Terminal töte.

Dieses Problem tritt nur auf, wenn ich Vim mit -pOption aufrufe . Wenn ich first.txtzuerst öffne und dann :tabezum Öffnen verwende second.txt, tritt dieses Problem nicht auf.

Irgendwelche Ideen, warum dies auftreten könnte?


Ausgabe von 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   

Ausgabe von 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

Aufgrund von Kommentaren von @Carpetsmoker fand ich heraus, dass das Problem an meiner .vimrcDatei liegt. Also habe ich überprüft, ob das Problem den Befehl verursacht, wobei einige Teile der .vimrcDatei kommentiert wurden. Schließlich fand ich heraus, dass das Problem bei der Leitung liegt

set columns=1000

Wie kann ein so unschuldiger Befehl dieses Problem verursachen? :help columnsgab keine nützlichen Informationen dazu.

nitishch
quelle
2
Welches Vim (und Patch-Level) verwendest du? (wie vim --version output) und welches Betriebssystem? Unabhängig davon wäre es eine gute Idee, vim zu aktualisieren. Wenn Sie auf einem Mac arbeiten und Ruby-Plugins (wie Command-T) verwenden, können Sie diese neu installieren und / oder sicherstellen, dass vim System-Ruby und nicht RVM-Ruby verwendet (was bei einigen Leuten Probleme verursacht zu haben scheint)
davidlowryduda
1
Sie können vim als vim -u NONE -p first.txt second.txt... starten. Dadurch wird das Laden Ihrer vimrc-Datei verhindert.
Martin Tournoij
@hatter Das vim wurde installiert oder kompiliert? Können Sie es auf 7.4 aktualisieren und sehen, ob das hilft?
Kenorb
@kenorb Vim wurde installiert.
Nitishch
@ Carpetsmoker Es hat funktioniert !! Weist dies definitiv darauf hin, dass ein Problem in der .vimrcDatei vorliegt?
Nitishch

Antworten:

6

Das SEGV-Signal, auch als Segfault bezeichnet, ist fast immer auf einen Fehler im Programm zurückzuführen, das Sie ausführen - in diesem Fall vim. (Andere Ursachen sind Dinge wie defekte Hardware oder einmal im blauen Mond Kernel-Bugs).

Sie müssen also wirklich einen Fehler melden. :help bug-reportsEnthält Anweisungen zum Melden eines Fehlers. Es hört sich so an, als hätten Sie bereits eine minimale Anzahl von Schritten, um das Problem zu reproduzieren. Das ist also der größte Teil der Arbeit dort. Sie sollten jedoch wahrscheinlich zuerst eine neuere Version von Vim testen, um sicherzustellen, dass diese noch nicht behoben wurde.

derobert
quelle
Ich benutze Vim 7.4. Offizielle Website sagt, dass dies die neueste Version ist.
Nitishch
@hatter Sie haben weniger Patches angewendet als verfügbar.
Derobert
Er führt Debian aus, das erklärt :-)
Martin Tournoij
@Carpetsmoker Ich verwende Debian und habe Patch 488 durchlaufen ... Ich bin mir nicht sicher, warum OP älter ist. Wheezy (aktuelle Version) hat 7.3, also verwendet OP das nicht. Instabil, Jessie und Wheezy-Backports haben alle 7.4 Patch 488. (Gegeben, 640 ist aktuell, das ist also noch etwas alt.)
derobert
3

Wenn Ihr vim aufgrund eines Segmentierungsfehlers abstürzt , weist dies auf eine Verletzung des Speicherzugriffs hin, die entweder durch Softwarefehler oder Hardwareprobleme verursacht wird.

Wenn dies wiederholt vorkommt, sollten Sie Folgendes tun:

  1. Deaktivieren Sie Plugins, indem Sie Folgendes ausführen: vim -u NONEund prüfen Sie, ob dies hilfreich ist.
  2. Aktualisieren Sie Ihr vim auf die neueste stabile Version.
  3. Aktualisieren Sie Ihr vim auf die neueste Entwicklungsversion.
  4. Optional können Sie dieselbe vim-Version auf einem anderen Computer überprüfen (möglicherweise aufgrund von Hardwareproblemen).
  5. Versuchen Sie, vimunter Debugger zu laufen , z. B.: gdb vimUnd suchen Sie nach dem Backtrace (nach SEGV in gdb: type btoder bt full).
  6. Wenn die Rückverfolgung keine Symbole enthält, müssen Sie Ihr vim neu kompilieren, um diese einzuschließen.
  7. Wenn Sie die Rückverfolgung abgeschlossen haben, suchen Sie nach ähnlichen Problemen oder melden Sie einen neuen Fehler im Bug-Tracker von vim (für einfaches vim) oder suchen Sie nach :help bugs. Wenn Sie eine andere Version von vim haben (wie gVim, MacVim, NeoVim), melden Sie dies bitte den richtigen Betreuern.
Kenorb
quelle
2
Dies geschieht nur auf meinem System. Passiert nicht mit -u NONE. Scheint, die Linie set columns=1000in .vimrcist der Schuldige.
Nitishch
0

Segmentierungsfehler können auch mit interagierenden Servern wie Netbeans verbunden sein und autocmdeinen Puffer (z. B. BufNewFileOperationen) ungültig machen, den ein anderes Programm (Plugin, ...) in der .vimKonfiguration erwartet (oder ähnlich) . Versuchen Sie, diese Zeilen in z .vimrc.

Typische Fehlermeldung ist:

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

wo commandkann zB seineditFile

Radagast
quelle