Ошибка: нарушение многопоточности в rb_gc () - PullRequest
13 голосов
/ 05 августа 2010

Я новичок в Ruby on Rails.

Я запустил следующее в терминале при создании учебника по блогам с Rails:

$ rails blog
[BUG] cross-thread violation on rb_gc()
(null)

Abort trap

Как определить, что означает это сообщение об ошибке и как его исправить?1006 *

$ 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

ОБНОВЛЕНИЕ

Я немного повозился и больше не получаю сообщение об ошибке.Но я замечаю, что в моей среде сейчас идет другой путь Ruby.

$ 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

Похоже, это означает, что у меня есть несколько установок Ruby на моем компьютере Mac.Один в / opt / local / bin / и / usr / bin /.Я думаю, что первое пришло из установки MacPorts, а второе пришло с моей системой (возможно, обновленной).

Ответы [ 3 ]

10 голосов
/ 15 октября 2012

Это может случиться со всеми видами драгоценных камней и, похоже, связано с драгоценным камнем с расширениями C, скомпилированными с другим рубином, чем тот, который пытается его загрузить.

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

Ошибка шины / Segfault

[BUG] cross-thread violation on rb_gc()

В каждом из случаев, которые я видел до сих пор, всегда заканчивалось тем, что гем / библиотека ruby ​​с расширениями C был скомпилирован с другим ruby ​​и /или архитектура, чем та, которая пытается загрузить его.Попробуйте удалить и переустановить драгоценные камни с расширениями C, которые ваше приложение использует для поиска этого баггера.

Драгоценный камень json является частым преступником, но есть длинный список других драгоценных камней, с которыми у людей возникли проблемы.Я не уверен, как точно определить, какой гем вызывает проблему, но если вы используете rvm с наборами гемов, вы всегда можете rvm gemset empty и переустановить все ваши гемы с помощью Bundler.

4 голосов
/ 14 июля 2011

У меня была похожая проблема при установке buildr gem (с использованием rvm). Помогло решение:

Я мог бы прибить этот баг к родным расширениям ruby-java-bridge (rjb) в Mac OSX. Что вы хотите сделать, чтобы это исправить следующее:

gem uninstall rjb
gem uninstall buildr

При появлении запроса просто удалите все версии.

gem install rjb -v 1.3.3 --platform ruby
gem install buildr

Это установит рубиновую версию rjb, а не нативный дарвин версия. Это должно решить проблему.

Приветствия Доминик

Хотя это не относится к вопросу, это может помочь тем, кто будет искать одно и то же сообщение об ошибке.

4 голосов
/ 12 октября 2010

Проблема заключалась в том, что в моей системе было несколько установок / путей ruby. Я считаю, что Mac OS X Snow Leopard поставляется с предустановленным Ruby. Я сделал ошибку, используя MacPorts для установки более новой версии, прямо рядом.

Я исправил проблему:

  1. Удаление версии ruby ​​из Macports
  2. Установка Ruby Version Manager , он же rvm, чтобы помочь мне управлять несколькими установками Ruby. (необязательно, но рекомендуется)

Я также разместил это на Ruby on Rails Talk. См. Ошибка: нарушение многопоточности в rb_gc ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...