Ten problem pojawia się, gdy uruchamiam Vima z -p
opcją. Załóżmy, że zacząłem od
vim -p first.txt second.txt
Następnie po edycji first.txt
przechodzę do second.txt
używania gt
. Naciskam klawisze gg
i G
jeszcze raz. To powoduje błąd
Vim: Caught deadly signal SEGV
Od tego momentu Vim nie reaguje na żaden sygnał, w tym Ctrl D. Mogę zamknąć tę sesję tylko zabijając terminal.
Ten problem pojawia się tylko wtedy, gdy wywołuję Vima z -p
opcją. Jeśli first.txt
najpierw otworzę, a następnie użyję :tabe
do otwarcia second.txt
, ten problem się nie pojawi.
Wszelkie pomysły, dlaczego tak się dzieje?
Wyjście 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
Wyjście 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
Na podstawie komentarzy @Carpetsmoker dowiedziałem się, że przyczyną problemu jest mój .vimrc
plik. Więc sprawdziłem, czy uruchomiłem problem powodujący polecenie z .vimrc
komentarzem niektórych części pliku. W końcu dowiedziałem się, że problem dotyczy linii
set columns=1000
W jaki sposób tak niewinne polecenie może powodować ten problem? :help columns
nie podał żadnych użytecznych informacji na ten temat.
vim -u NONE -p first.txt second.txt
... Zapobiegnie to ładowaniu pliku vimrc..vimrc
pliku występuje problem ?Odpowiedzi:
Sygnał SEGV, znany również jako segfault, prawie zawsze wynika z błędu w uruchomionym programie - w tym przypadku vim. (Innymi przyczynami są np. Wadliwy sprzęt lub błąd niebieskiego księżyca).
Naprawdę musisz zgłosić błąd.
:help bug-reports
zawiera instrukcje dotyczące zgłaszania błędu. Wygląda na to, że masz już minimalną liczbę kroków do odtworzenia problemu, więc to większość pracy. Prawdopodobnie powinieneś najpierw przetestować nowszą wersję Vima, aby upewnić się, że nie została już naprawiona.źródło
Jeśli vim ulega awarii z powodu błędu segmentacji , oznacza to naruszenie dostępu do pamięci, które jest spowodowane błędem oprogramowania lub problemami sprzętowymi.
Jeśli zdarza się to wielokrotnie, wykonaj następujące czynności:
vim -u NONE
i sprawdź, czy to pomoże.vim
w debuggerze, np .:gdb vim
i sprawdź ślad (po SEGV, wgdb
: wpiszbt
lubbt full
).:help bugs
. Jeśli masz inną wersję vima (np. GVim, MacVim, NeoVim), zgłoś to odpowiednim opiekunom.źródło
-u NONE
. Wydaje się, że liniaset columns=1000
w.vimrc
jest winowajcą.Błędy segmentacji mogą być również powiązane z interakcyjnymi serwerami, takimi jak netbeans, i
autocmd
który unieważnia bufor (np.BufNewFile
Operacje), którego inny program (wtyczka, ...) oczekuje (lub podobny) w.vim
konfiguracji, spróbuj skomentować te wiersze np.vimrc
.Typowy komunikat o błędzie to:
gdzie
command
może być npeditFile
źródło