Error: cross-thread violation on rb_gc()

macos, ruby-on-rails

Solution

The problem was that I had multiple installs/paths of ruby on my system. Mac OS X Snow Leopard comes with ruby pre-installed I believe. I made the mistake of using MacPorts to install a newer version, right alongside.

I fixed the problem by:

- Uninstalling the version of ruby from Macports

- Installing Ruby Version Manager, aka rvm, to help me manage multiple ruby installs. (optional, but recommended)

I also posted this on Ruby on Rails Talk. See Error: cross-thread violation on rb_gc()

Problem

I'm new to Ruby on Rails. I ran the following in a terminal when I was going through creating a blog tutorial with Rails: ``` $ rails blog [BUG] cross-thread violation on rb_gc() (null) Abort trap ``` How do I determine what this error message means and how to fix it? ``` $ gem env RubyGems Environment: - RUBYGEMS VERSION: 1.3.7 - RUBY VERSION: 1.8.7 (2010-06-23 patchlevel 299) [i686-darwin10] - INSTALLATION DIRECTORY: /opt/local/lib/ruby/gems/1.8 - RUBY EXECUTABLE: /opt/local/bin/ruby - EXECUTABLE DIRECTORY: /opt/local/bin - RUBYGEMS PLATFORMS: - ruby - x86-darwin-10 - GEM PATHS: - /opt/local/lib/ruby/gems/1.8 - /Users/sunpech/.gem/ruby/1.8 - GEM CONFIGURATION: - :update_sources => true - :verbose => true - :benchmark => false - :backtrace => false - :bulk_threshold => 1000 - :sources => ["http://rubygems.org/", "http://gems.github.com"] - REMOTE SOURCES: - http://rubygems.org/ - http://gems.github.com ``` UPDATE I did some fiddling and I'm not getting the error message anymore. But I do notice that my environment is running a different path of Ruby now. ``` $ gem env RubyGems Environment: - RUBYGEMS VERSION: 1.3.5 - RUBY VERSION: 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0] - INSTALLATION DIRECTORY: /Library/Ruby/Gems/1.8 - RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby - EXECUTABLE DIRECTORY: /usr/bin - RUBYGEMS PLATFORMS: - ruby - universal-darwin-10 - GEM PATHS: - /Library/Ruby/Gems/1.8 - /Users/sunpech/.gem/ruby/1.8 - /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8 - GEM CONFIGURATION: - :update_sources => true - :verbose => true - :benchmark => false - :backtrace => false - :bulk_threshold => 1000 - :sources => ["http://rubygems.org/", "http://gems.github.com"] - REMOTE SOURCES: - http://rubygems.org/ - http://gems.github.com ``` This seems to imply that I have multiple installs of Ruby on my Mac box. One in /opt/local/bin/ and /usr/bin/. I think the former came from a MacPorts install, and the latter is what came with my system (possibly upgraded).

Original source