在OS X Sierra上的ruby 1.8.7中打开SSL套接字时出现分段错误

时间:2016-11-22 21:39:17

标签: ruby macos ruby-1.8.7

OS X Sierra上的Ruby 1.8.7-p375。我遇到了一个与联邦快递公司谈判加速SOAP服务段错误的库的问题。

~/.rbenv/versions/1.8.7-p375/lib/ruby/gems/1.8/gems/httpclient-2.7.2/lib/httpclient/ssl_socket.rb:46: [BUG] Segmentation fault
ruby 1.8.7 (2013-12-22 patchlevel 375) [i686-darwin16.1.0]'

这是一个陷入Rails 2 / Ruby 1.8.7的遗留应用程序,我在我的开发笔记本电脑上运行OS X Sierra。

完整的调用堆栈包括一个fedex库,soap4r和httpclient,这使得创建一个最小的失败案例非常困难(尽管我还在尝试)。另外,这只发生在OS X中。在Debian上 - 甚至是Debian 8 - 我在运行这个遗留代码时没有问题。

完整堆栈跟踪无应用程序代码:

httpclient (2.7.2) lib/httpclient/ssl_socket.rb:46:in `ssl_connect'
httpclient (2.7.2) lib/httpclient/ssl_socket.rb:24:in `create_socket'
httpclient (2.7.2) lib/httpclient/session.rb:739:in `connect'
~/.rbenv/versions/1.8.7-p375/lib/ruby/1.8/timeout.rb:67:in `timeout'
httpclient (2.7.2) lib/httpclient/session.rb:735:in `connect'
httpclient (2.7.2) lib/httpclient/session.rb:497:in `query'
httpclient (2.7.2) lib/httpclient/session.rb:170:in `query'
httpclient (2.7.2) lib/httpclient.rb:1238:in `do_get_block'
httpclient (2.7.2) lib/httpclient.rb:1021:in `do_request'
httpclient (2.7.2) lib/httpclient.rb:1129:in `protect_keep_alive_disconnected'
httpclient (2.7.2) lib/httpclient.rb:1016:in `do_request'
httpclient (2.7.2) lib/httpclient.rb:858:in `request'
httpclient (2.7.2) lib/httpclient.rb:761:in `post'
~/.rbenv/versions/1.8.7-p375/lib/ruby/gems/1.8/gems/soap4r-ng-2.0.3/lib/soap/streamHandler.rb:238:in `send_post'
~/.rbenv/versions/1.8.7-p375/lib/ruby/gems/1.8/gems/soap4r-ng-2.0.3/lib/soap/streamHandler.rb:172:in `send'
~/.rbenv/versions/1.8.7-p375/lib/ruby/gems/1.8/gems/soap4r-ng-2.0.3/lib/soap/rpc/proxy.rb:187:in `route'
~/.rbenv/versions/1.8.7-p375/lib/ruby/gems/1.8/gems/soap4r-ng-2.0.3/lib/soap/rpc/proxy.rb:150:in `call'
~/.rbenv/versions/1.8.7-p375/lib/ruby/gems/1.8/gems/soap4r-ng-2.0.3/lib/soap/rpc/driver.rb:152:in `call'
(eval):6:in `getRates'

这是我用来安装Ruby 1.8.7的过程:https://gist.github.com/wmakley/8dfe436dfe345efae3ddf6756f9766b6

我希望OpenSSL 0.9.8可以解决这个问题,但没有骰子。

对任何建议开放!我的最小测试代码实际上有效,但我可能没有做任何必要的事情来创建相同的环境:

的Gemfile:

gem 'httpclient', '~> 2.7.0' # required by soap4r-ng; 2.8 doesn't work in ruby 1.8
gem 'soap4r-ng'

Ruby代码:

require 'httpclient'
require 'soap/soap'

client = HTTPClient.new(nil, SOAP::VERSION::FORK_STRING)
client.post(
  'https://gateway.fedex.com:443/web-services',
  LOTS OF XML INCLUDING SECRETS,
  {
    'SOAPAction' => 'getRates',
    'ContentType' => 'text/xml; charset=utf-8'
  }
)

0 个答案:

没有答案
相关问题