3

在使用 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(现在是 1.10.2 版/Users/pawel/.rvm/bin/rvm
  • 我已经升级到 Ruby 1.9.3-p125 并且也尝试过 1.9.2
  • 我已按照此处的说明进行操作:http: //www.christopherirish.com/2011/09/02/ruby-1-9-2-segmentation-fault-and-openssl/(实际上是我的上述步骤)。我还在这里阅读了克里斯托弗的上一篇文章
  • 在我的项目目录中,当我运行以下命令时,我得到了预期的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

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

4

3 回答 3

7

我也遇到了同样的分段错误错误,但我正在尝试列出 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 所说,我在错误的地方写了评论。现在我正在编辑它并做出回应。;-)
于 2012-01-25T14:18:51.580 回答
2

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

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

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

于 2012-02-20T10:14:27.200 回答
0

我也遇到了这个问题,但使用了不同的解决方案。这是错误的完整堆栈跟踪

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

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

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

这听起来类似于我最近在 MacPorts 中安装的 readline 库破坏了 ruby​​ 安装时遇到的问题。在损坏的 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

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

  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 文件。

于 2012-03-25T08:53:01.577 回答