Ruby command-t SEGV

4.7k Views Asked by At

I am on ubuntu 11.10 and have had vim-gnome installed and working. Using vundle and have installed seeral packages all working.

I have installed command-t but it will not function until C extensions are compiled. Reading the manual this is the solution.

  rake make

For me the location is actually:

~/.vim/bundle/command-t

Anyway so I turned rvm off and installed the system 1.8 as advised in the command-t help guide. I checked the documentation and the most common cause of command-t errors is compiling against the wrong ruby.

So I found this command to check the compiled version.

renshaw@renshaw-TravelMate-5740G:~/.vim/bundle/command-t$ ldd `which vim` | grep ruby
libruby1.8.so.1.8 => /usr/lib/libruby1.8.so.1.8 (0x00007f913932c000)

So I installed rake for the ruby 1.8 and compiled with rake make

renshaw@renshaw-TravelMate-5740G:~/.vim/bundle/command-t$ sudo rake make
/usr/bin/ruby1.8 extconf.rb
checking for ruby.h... yes

and off it goes and compiles.

however start gvim and run \t for command-t and

Vim: Caught deadly signal SEGV
Vim: Finished.
Segmentation fault

How can I get command-t going on ubuntu 11.10?

Update.

Built Gvim from sources using

hg clone https://vim.googlecode.com/hg/ vim
cd vim
sudo ./configure --enable-rubyinterp=yes --enable-pythoninterp=yes --enable-gui=gtk2
make 
make install

vim --version | grep ruby

The vim version command returns correct that ruby support is built against my installed system 1.8 but it still SEGV when using command T.

So found and tried this

cd ~/.vim/ruby/command-t
/usr/bin/ruby extconf.rb
make

This failed as well. I then add this to bashrc from a previous support ticket.

vim() {
    (unset GEM_PATH GEM_HOME; command vim "$@")
}
4

There are 4 best solutions below

2
On

I had similar problems when using the rake task. I solved it by compiling the extension myself.

From the command-t plugin directory:

rvm use system    
cd ruby/command-t
ruby extconf.rb
make
sudo make install
0
On

This is how I fixed this problem (I believe it's caused by version missmatch):

I had an old version of vim installed (from apt using debian). The old version of vim was using old 1.9.x version of Ruby libraries. I compiled command-t according to the guide in https://github.com/wincent/Command-T. I used ruby 2.1.x during the compilation process. I got SEGV when i did t. I believe it was caused by the version missmatch between the Ruby I used when I compiled command-t and the Ruby vim is using. So the fix was to compile vim against the same Ruby libs that command-t was compiled against. When I upgraded my vim using "apt-get install vim" everything started to work. Now the new version of vim is using the same new Ruby libraries that come with the package manager.

0
On

I got it to work on Ubuntu 11.10 following these instructions and building Vim and Command-T with Ruby 1.9.2p290 -

sudo apt-get install python-dev ruby-dev mercurial ncurses-dev liblua5.1-0-dev lua5.1

rvm use 1.9.2

hg clone https://vim.googlecode.com/hg/ ~/vim 
cd ~/vim
hg update -C v7-3-154
./configure --with-features=huge  --disable-largefile \
        --enable-perlinterp   --enable-pythoninterp \
        --enable-rubyinterp   --enable-gui=gtk2 \      
make
sudo make install

And then following the Command-T installation instructions for Pathogen, in my case.

1
On

Ubuntu 13.04 has the very same issue. After trying different combinations, here is what worked for me.

I don't like building from the source, so I used vim-nox package:

sudo apt-get install vim-nox

Now, when compiling command-t with Ruby 1.8.7 or Ruby 2.0.0 SEGV signals were caught. In order to experiment with different Ruby versions, I installed rvm:

curl -L https://get.rvm.io | bash

Then I used Ruby 1.9.1 to compile the command-t extension:

rvm install 1.9.1
rvm use 1.9.1
cd ~/.vim/bundle/command-t/ruby/command-t
ruby extconf.rb
make

To sum up: vim-nox + ruby 1.9.1 = vim command-t works well on Ubuntu 13.04.