Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error: cross-thread violation on rb_gc()

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).

like image 651
spong Avatar asked Aug 05 '10 09:08

spong


1 Answers

This can happen with all sorts of gems and seems to have to do with a gem with C extensions compiled against a different ruby than the one trying to load it.

https://rvm.io/support/troubleshooting/

Bus Error / Segfault

[BUG] cross-thread violation on rb_gc()

In every case of this I have seen thus far it has always ended up being that a ruby gem/library with C extensions was compiled against a different ruby and/or architecture than the one that is trying to load it. Try uninstalling & reinstalling gems with C extensions that your application uses to hunt this bugger down.

The json gem is a frequent culprit, but there's a long list of other gems that people have had issue with. I'm not sure how to figure out exactly which gem is causing the problem, but if you're using rvm with gemsets you, can always rvm gemset empty and reinstall all your gems with Bundler.

like image 139
mmrobins Avatar answered Oct 12 '22 01:10

mmrobins