【问题标题】:Persistent Ruby segfaulting after a clean install全新安装后持续的 Ruby 段错误
【发布时间】:2012-02-18 11:49:04
【问题描述】:

当使用 Koala gem 通过 HTTP 通信时,Ruby 不断出现段错误:

/Users/pawel/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/net/http.rb:799: [BUG] Segmentation fault

我尝试了以下方法:

  • 运行which -a ruby,它通过MacPorts 显示了多个红宝石。所以我删除了这些并再次运行相同的命令只返回/usr/bin/ruby
  • 我已经删除了 PostgreSQL 的 MacPorts 版本并使用 Homebrew 安装了它(使用 MacPorts,它安装了自己的 OpenSSL 版本)
  • 运行openssl version 返回OpenSSL 1.0.0g 18 Jan 2012
  • 我从 RVM 中删除了 Ruby 1.9.3,并尝试了 Luciano 的以下方法,但没有成功。
  • 我还尝试从 RVM 重新安装 1.9.3 并指定 --with-openssl-dir=/opt/local,因为 which openssl 返回 /opt/local/bin/openssl
  • 我已经重新安装了 RVM(它现在是 /Users/pawel/.rvm/bin/rvm 中的 1.10.2 版)
  • 我已经升级到 Ruby 1.9.3-p125 并且还尝试了 1.9.2
  • 我已按照此处的说明进行操作:http://www.christopherirish.com/2011/09/02/ruby-1-9-2-segmentation-fault-and-openssl/(实际上是我上面的步骤)。我还阅读了 Christopher 之前的帖子 here
  • 在我的项目目录中,当我运行以下命令时,我会得到预期的 0.:

    ruby -rubygems -e" require 'eventmachine'; require 'openssl' "; echo $?

  • 我尝试过sudo port -f deactivate openssl,但是当我尝试启动Rails 服务器时,我得到Library not loaded: /opt/local/lib/libssl.1.0.0.dylib

我需要更多关于我可以尝试什么或我错过的东西的想法。

【问题讨论】:

  • 我从 rvm (rvm pkg install openssl) 中删除了 ~/.rvm dir nad 安装的 rvm、ruby 和 openssl 包,一切都开始正常工作了
  • 你的意思是运行rvm implode?你的rvm install ruby 1.9.3 标志看起来怎么样?
  • 我不知道implode。我已经手动删除了 rvm dir rm -rf ~/.rvm,然后再次安装 rvm,然后是 rvm pkg install opensslrvm pkg install iconvrvm install 1.9.2 --with-openssl-dir=$rvm_path/usr --with-iconv-dir=$rvm_path/usr(是的,大约是 1.9.2,但我认为它没有区别)跨度>
  • 我以前试过这个,昨晚又试了一次,还是不行。

标签: ruby ruby-on-rails-3 openssl segmentation-fault net-http


【解决方案1】:

我也遇到了这个问题,但使用了不同的解决方案。这是full stack trace of the error

这里是官方错误报告:http://bugs.ruby-lang.org/issues/6184 堆栈跟踪下方的响应非常有帮助。

如果您使用 OS X 的默认 openssl -> 像 brew install openssl 一样使用已安装的 openssl 构建,然后再试一次。

如果您使用的是用户安装的 openssl -> 使用 OS X 默认 ssl 构建,然后重试。

这听起来类似于我最近在readline library installed in MacPorts broke a ruby installation 时遇到的问题。在损坏的 ruby​​ 安装上运行以下脚本表明它正在加载 MacPorts openssl lib

require 'net/https'
puts `lsof -p #{$$} | grep ssl | awk '{print $9}'`

(输出)

/Users/john/.rbenv/versions/1.9.3-p125/lib/ruby/1.9.1/x86_64-darwin11.2.0/openssl.bundle
/opt/local/lib/libssl.1.0.0.dylib

解决方案是在安装 ruby​​ 时将 MacPorts 暂时移出/opt/local

  1. 退出所有正在访问 MacPorts 文件的进程。您可以使用sudo lsof | grep /opt/local 查看哪些正在运行。
  2. sudo mv /opt/local /opt/localbak
  3. 打开一个新终端,然后编译安装 Ruby
  4. sudo mv /opt/localbak /opt/local

之后,ruby 安装与 MacPorts 一起正常工作,并且没有从 MacPorts 加载 libssl 文件。

【讨论】:

    【解决方案2】:

    问题似乎是 Homebrew 和 MacPorts 冲突,所以我删除了 MacPorts,删除了所有包和 /opt/local/ 目录。由于 Homebrew 上安装了 PostgreSQL,这导致 PG gem 出现一些问题。

    所以我删除了 Postgres 公式,然后重新安装它并使用 Homebrew 安装 OpenSSL。

    之后我 imploded RVM 并再次安装了它和我的红宝石(不确定这一步是否必要),最后它工作了。

    【讨论】:

    • 通常说提交后2天才能接受。猜猜这只是针对新问题。
    【解决方案3】:

    我也遇到了同样的分段错误错误,但我正在尝试列出 AWS-S3 上的文件。

    编辑

    这种方法对我有用:

    export PATH=/usr/bin:/bin:/usr/sbin:/sbin:$HOME/.rvm/bin
    rvm remove 1.9.3 
    rvm pkg install iconv
    rvm pkg install openssl
    rvm install ruby-1.9.3 --with-openssl-dir=~/.rvm/usr --with-iconv-dir=~/.rvm/usr
    
    • 正如@Simpleton 所说,我在错误的地方写了一条评论。现在我正在编辑它并做出回应。 ;-)

    【讨论】:

    • 感谢这在尝试类似的重新安装后对我有用。您的 rvm 安装行有些有趣,复制/粘贴不起作用,也许是一些特殊字符。无论如何,谢谢。
    • @Luciano 仍然给你赏金,因为这个答案可能适用于没有 MacPorts/Homebrew 冲突的任何人。
    • 在 Lion 上,我必须运行 export CC=/usr/bin/gcc 才能编译。发现于Jeff Douglas
    • 我也尝试了各种其他提示,但均未成功 - 消除了使用哪个 openssl 的矛盾心理的特定 PATH 设置似乎有所作为并为我工作。
    • 我需要使用rvm get head 来更新 RVM,然后这很好用!通过Delameko
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多