Vim -p: Sinyal SEGV yang tertangkap mematikan?


12

Saya mendapatkan masalah ini ketika saya memulai Vim dengan -popsi. Misalkan, saya mulai dengan

vim -p first.txt second.txt

Kemudian setelah mengedit first.txtsaya pindah ke second.txtmenggunakan gt. Saya menekan tombol ggdan Glagi. Ini menghasilkan kesalahan

Vim: Caught deadly signal SEGV

Dari titik ini, Vim tidak menanggapi sinyal apa pun termasuk Ctrl D. Saya bisa menutup sesi ini hanya dengan mematikan terminal.

Masalah ini muncul hanya ketika saya memanggil Vim dengan -popsi. Jika saya buka first.txtdulu dan kemudian gunakan :tabeuntuk membuka second.txt, masalah ini tidak muncul.

Adakah ide mengapa ini bisa terjadi?


Output dari 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   

Output dari 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

Berdasarkan komentar oleh @Carpetsmoker, saya menemukan bahwa masalahnya adalah karena .vimrcfile saya . Jadi saya memeriksa menjalankan masalah yang menyebabkan perintah dengan beberapa bagian dari .vimrcfile berkomentar. Akhirnya saya mengetahui bahwa masalahnya ada pada garis

set columns=1000

Bagaimana perintah yang begitu polos dapat menyebabkan masalah ini? :help columnstidak memberikan informasi yang berguna mengenai hal ini.


2
vim (dan tingkat patch) mana yang Anda gunakan? (seperti keluaran vim --version), dan OS apa? Apapun, itu akan menjadi ide bagus untuk memperbarui vim. Jika Anda menggunakan Mac dan menggunakan plugin ruby ​​(seperti command-T), Anda dapat menginstalnya kembali dan / atau memastikan vim menggunakan sistem ruby ​​dan bukan rvm ruby ​​(yang tampaknya telah menyebabkan masalah bagi sebagian orang)
davidlowryduda

1
Anda dapat memulai vim sebagai vim -u NONE -p first.txt second.txt... Ini akan mencegah pemuatan file vimrc Anda.
Martin Tournoij

@ Apakah vim telah diinstal atau dikompilasi? Dapatkah Anda meningkatkannya ke 7.4 dan melihat apakah itu membantu.
kenorb

@kenorb Vim telah diinstal.
nitishch

@Carpetsmoker Berhasil !! Apakah ini secara pasti menunjukkan bahwa ada masalah dalam .vimrcfile?
nitishch

Jawaban:


6

Sinyal SEGV, juga dikenal sebagai segfault, hampir selalu disebabkan oleh bug dalam program yang Anda jalankan — dalam hal ini, vim. (Penyebab lain adalah hal-hal seperti perangkat keras yang rusak, atau sekali dalam bulan biru, bug kernel).

Jadi, sungguh, Anda perlu melaporkan bug. :help bug-reportsmemberikan instruksi tentang cara melaporkan bug. Sepertinya Anda sudah memiliki serangkaian langkah minimal untuk mereproduksi masalah, sehingga sebagian besar pekerjaan di sana. Anda mungkin harus menguji versi Vim yang lebih baru terlebih dahulu, hanya untuk memastikan itu belum diperbaiki.


Saya menggunakan Vim 7.4. Situs web resmi mengatakan ini adalah versi terbaru.
nitishch

@Apakah Anda menerapkan lebih sedikit tambalan daripada yang tersedia.
derobert

Dia menjalankan Debian, jadi itu menjelaskan bahwa :-)
Martin Tournoij

@Carpetsmoker Saya menjalankan Debian dan telah melalui patch 488 ... Saya tidak yakin mengapa OP lebih tua. Wheezy (rilis saat ini) memiliki 7,3, jadi OP tidak menggunakannya. Tidak stabil, Jessie, dan Wheezy-Backports semuanya memiliki 7,4 patch 488. (Mengingat, 640 saat ini, jadi itu masih agak lama.)
derobert

3

Jika vim Anda mogok karena kesalahan segmentasi , itu menunjukkan pelanggaran akses memori yang disebabkan oleh bug perangkat lunak atau masalah perangkat keras.

Jika ini terjadi berulang kali, Anda harus melakukannya secara berurutan:

  1. Nonaktifkan plugin dengan menjalankan: vim -u NONEdan lihat apakah itu membantu.
  2. Tingkatkan vim Anda ke versi stabil terbaru.
  3. Tingkatkan vim Anda ke versi pengembangan terbaru.
  4. Secara opsional periksa versi vim yang sama pada mesin yang berbeda (mungkin itu disebabkan oleh masalah perangkat keras).
  5. Coba jalankan di vimbawah debugger, misalnya: gdb vimdan periksa backtrace (setelah SEGV, dalam gdb: ketik btatau bt full).
  6. Jika backtrace tidak memiliki simbol, Anda harus mengkompilasi ulang vim Anda untuk memasukkan ini.
  7. Jika Anda telah menyelesaikan penelusuran balik, periksa masalah serupa atau laporkan bug baru di pelacak bug vim (untuk vim polos) atau periksa :help bugs. Jika Anda memiliki versi vim yang berbeda (seperti gVim, MacVim, NeoVim), silakan laporkan ke pengelola yang tepat.

2
Ini hanya terjadi pada sistem saya. Tidak terjadi dengan -u NONE. Tampaknya garis set columns=1000masuk .vimrcadalah pelakunya.
nitishch

0

Kesalahan segmentasi juga dapat dihubungkan ke server yang berinteraksi seperti netbeans dan autocmdyang membatalkan buffer (misalnya BufNewFileoperasi) yang diharapkan oleh program lain (plugin, ...) (atau serupa) dalam .vimkonfigurasi, coba komentari baris-baris tersebut dalam mis .vimrc.

Pesan kesalahan umum adalah:

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

dimana commandbisa miseditFile

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.