启动服务器时Rails出现分段错误?

15

我试图启动我的Rails 3环境,但一直遇到一个无法解决的错误。非常感谢任何帮助!

以下是问题:

Patrick-Scotts-MacBook-Pro:~ PJS$ cd hope_app
Patrick-Scotts-MacBook-Pro:hope_app PJS$ rails server
/Users/PJS/.rvm/gems/ruby-1.9.2-rc2/gems/sqlite3-ruby-1.3.1/lib/sqlite3/sqlite3_native.bundle: [BUG] Segmentation fault
ruby 1.9.2dev (2010-07-11 revision 28618) [x86_64-darwin10.4.0]

-- control frame ----------
c:0026 p:-541019732 s:0075 b:0075 l:000074 d:000074 TOP   
c:0025 p:---- s:0073 b:0073 l:000072 d:000072 CFUNC  :require
c:0024 p:0029 s:0069 b:0069 l:000065 d:000068 BLOCK  /Users/PJS/.rvm/gems/ruby-1.9.2-    rc2/gems/sqlite3-ruby-1.3.1/lib/sqlite3.rb:6
c:0023 p:0035 s:0066 b:0066 l:000065 d:000065 TOP    /Users/PJS/.rvm/gems/ruby-1.9.2- rc2/gems/sqlite3-ruby-1.3.1/lib/sqlite3.rb:2
c:0022 p:---- s:0064 b:0064 l:000063 d:000063 FINISH
c:0021 p:---- s:0062 b:0062 l:000061 d:000061 CFUNC  :require
c:0020 p:0026 s:0058 b:0058 l:000039 d:000057 BLOCK  /Users/PJS/.rvm/gems/ruby-1.9.2-rc2/gems/bundler-1.0.0.rc.2/lib/bundler/runtime.rb:64
c:0019 p:---- s:0055 b:0055 l:000054 d:000054 FINISH
c:0018 p:---- s:0053 b:0053 l:000052 d:000052 CFUNC  :each
c:0017 p:0080 s:0050 b:0050 l:000039 d:000049 BLOCK  /Users/PJS/.rvm/gems/ruby-1.9.2-rc2/gems/bundler-1.0.0.rc.2/lib/bundler/runtime.rb:62
c:0016 p:---- s:0045 b:0045 l:000044 d:000044 FINISH
c:0015 p:---- s:0043 b:0043 l:000042 d:000042 CFUNC  :each
c:0014 p:0046 s:0040 b:0040 l:000039 d:000039 METHOD /Users/PJS/.rvm/gems/ruby-1.9.2-rc2/gems/bundler-1.0.0.rc.2/lib/bundler/runtime.rb:51
c:0013 p:0021 s:0036 b:0036 l:000035 d:000035 METHOD /Users/PJS/.rvm/gems/ruby-1.9.2-   rc2/gems/bundler-1.0.0.rc.2/lib/bundler.rb:114
c:0012 p:0079 s:0032 b:0032 l:000031 d:000031 TOP    /Users/PJS/hope_app/config/application.rb:7
c:0011 p:---- s:0030 b:0030 l:000029 d:000029 FINISH
c:0010 p:---- s:0028 b:0028 l:000027 d:000027 CFUNC  :require
c:0009 p:0016 s:0024 b:0024 l:000015 d:000023 BLOCK  /Users/PJS/.rvm/gems/ruby-1.9.2-rc2/gems/railties-3.0.0.rc/lib/rails/commands.rb:28
c:0008 p:---- s:0021 b:0021 l:000020 d:000020 FINISH
c:0007 p:---- s:0019 b:0019 l:000018 d:000018 CFUNC  :tap
c:0006 p:0468 s:0016 b:0016 l:000015 d:000015 TOP    /Users/PJS/.rvm/gems/ruby-1.9.2-rc2/gems/railties-3.0.0.rc/lib/rails/commands.rb:27
c:0005 p:---- s:0012 b:0012 l:000011 d:000011 FINISH
c:0004 p:---- s:0010 b:0010 l:000009 d:000009 CFUNC  :require
c:0003 p:0061 s:0006 b:0006 l:001598 d:0013a8 EVAL   script/rails:6
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH
c:0001 p:0000 s:0002 b:0002 l:001598 d:001598 TOP   
---------------------------
-- Ruby level backtrace information ----------------------------------------
script/rails:6:in `<main>'
script/rails:6:in `require'
/Users/PJS/.rvm/gems/ruby-1.9.2-rc2/gems/railties-3.0.0.rc/lib/rails/commands.rb:27:in `<top (required)>'
/Users/PJS/.rvm/gems/ruby-1.9.2-rc2/gems/railties-3.0.0.rc/lib/rails/commands.rb:27:in `tap'
/Users/PJS/.rvm/gems/ruby-1.9.2-rc2/gems/railties-3.0.0.rc/lib/rails/commands.rb:28:in `block in <top (required)>'
/Users/PJS/.rvm/gems/ruby-1.9.2-rc2/gems/railties-3.0.0.rc/lib/rails/commands.rb:28:in `require'
/Users/PJS/hope_app/config/application.rb:7:in `<top (required)>'
/Users/PJS/.rvm/gems/ruby-1.9.2-rc2/gems/bundler-1.0.0.rc.2/lib/bundler.rb:114:in `require'
/Users/PJS/.rvm/gems/ruby-1.9.2-rc2/gems/bundler-1.0.0.rc.2/lib/bundler/runtime.rb:51:in `require'
/Users/PJS/.rvm/gems/ruby-1.9.2-rc2/gems/bundler-1.0.0.rc.2/lib/bundler/runtime.rb:51:in `each'
/Users/PJS/.rvm/gems/ruby-1.9.2-rc2/gems/bundler-1.0.0.rc.2/lib/bundler/runtime.rb:62:in `block in require'
/Users/PJS/.rvm/gems/ruby-1.9.2-rc2/gems/bundler-1.0.0.rc.2/lib/bundler/runtime.rb:62:in `each'
/Users/PJS/.rvm/gems/ruby-1.9.2-rc2/gems/bundler-1.0.0.rc.2/lib/bundler/runtime.rb:64:in `block (2 levels) in require'
/Users/PJS/.rvm/gems/ruby-1.9.2-rc2/gems/bundler-1.0.0.rc.2/lib/bundler/runtime.rb:64:in `require'
/Users/PJS/.rvm/gems/ruby-1.9.2-rc2/gems/sqlite3-ruby-1.3.1/lib/sqlite3.rb:2:in `<top (required)>'
/Users/PJS/.rvm/gems/ruby-1.9.2-rc2/gems/sqlite3-ruby-1.3.1/lib/sqlite3.rb:6:in `rescue in <top (required)>'
/Users/PJS/.rvm/gems/ruby-1.9.2-rc2/gems/sqlite3-ruby-1.3.1/lib/sqlite3.rb:6:in `require'

-- C level backtrace information -------------------------------------------
9个回答

39

根据这篇帖子,我重新安装了sqlite3 gem,问题消失了:

gem uninstall sqlite3
gem install sqlite3

我的软件版本:

% ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin11.2.0]
% rails -v
Rails 3.2.1

6
我发现完全关闭我的终端(关闭所有窗口,然后右键单击停靠栏中的终端图标并选择关闭),然后重新启动终端可以解决这个问题。
在我看到这个问题之前,我已经创建和销毁,使用和更改gemsets一段时间了。我怀疑一切只是变得混乱了。

2

我曾经遇到过和1.9.3类似的问题。我需要:

  1. 卸载sqlite3并重新安装
  2. 为了确保,卸载rake并重新安装

现在可以正常工作。


1
我遇到了类似的问题 - 看起来Rails试图使用不同版本的Ruby(1.9.2dev而不是1.9.2-rc2)。您可以通过以下方式确认:

head -1 `which rails`

更改第一行,或使用 gem uninstall rails && gem install rails 重新安装 gem。

(附注:感谢 venj 在 这里 提供的解决方案)


1
我遇到了一个问题,即使卸载并重新安装了sqlite3 gem和homebrew sqlite3包,仍然会出现段错误。结果发现,尽管rvm正在使用ruby 1.9.3,但rake仍指向lion自带的1.8.7安装。
$rake db:create
/Users/jessesanford/.rvm/gems/ruby-1.9.3-p125/gems/sqlite3-1.3.6/lib/sqlite3/sqlite3_native.bundle: [BUG] Segmentation fault
ruby 1.8.7 (2010-01-10 patchlevel 249) [universal-darwin11.0]

我不确定rake是如何安装在带有1.8.7 shebang脚本头的ruby gems库中的1.9.3版本中,但无论原因是什么,重新安装rake都可以纠正它,现在一切都运行顺利。


1

我也遇到了sqlite3-ruby 1.3.2的同样问题,一直在重复删除、安装和卸载相同的sqlite3-ruby。

最终我彻底删除了rvm目录。

rm -rf /usr/local/lib/rvm /usr/local/bin/{r*,gem-ruby-1.9.2-p136,irb-ruby-1.9.2-p136,testrb-ruby-1.9.2-p136} /usr/local/rvm

然后重新安装它,

我怀疑

libsqlite3-0 libsqlite3-dev sqlite3

在安装rvm之前,必须先安装这三个,因为我在其他机器上也是按照同样的步骤安装的,而且运行良好。

是的,这不是正确的解决方案。


类似的问题 - 所有与sqlite3相关的解决方案都没有帮助。我删除了我的.rvm目录并重新安装了rvm,但也没有起作用,它一直卡在我的ruby安装上。然后在第二次重新安装rvm时,在继续之前更新了rvm本身:'rvm get head' 就这样,从那里开始一切都运行正常了。 - johnmartirano
1
但请不要假设Sharad上面的命令是准确的,rm -rf在我的系统上会清除所有非rvm的东西。 - johnmartirano

1

我使用的版本与你完全相同,但我没有遇到这个问题。不过我不是用的Macbook Pro。

很难说这是Ruby 1.9.2的问题(因为它还不稳定到足以被正式发布),还是Sqlite 3 gem实际上有一个bug。对于稍早版本的Ruby 1.9.2,正是同样的bug 报告了该gem。

你可以尝试暂时降级到Sqlite版本1.3.0或者回退到Ruby 1.9.1,直到问题解决。虽然这不是一个令人满意的答案,但至少你可以再次开始工作了。


1

当我在Gemfile中两次声明了一个名为“test”的组时,我遇到了这个错误。一旦我删除了第二个声明,分段错误就不再出现了。


0

目前看起来我们主要是在尝试随机解决方案。

这是我的方案:

由于我在端口80上运行开发服务器,所以需要使用sudo命令来执行rails server命令。这有时会导致测试环境中某些文件的所有权问题。

而且似乎每次我在应用程序的测试套件中遇到问题时,我的开发服务器都会崩溃,并显示著名的“您可能遇到了Ruby解释器或扩展库中的错误”。

在这两种情况下,清除Rails的临时缓存(sudo bundle exec rails tmp:cache:clear)可以解决问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接