【问题标题】:Segmentation fault using ActionMailer with Ruby 1.9.3-p125使用带有 Ruby 1.9.3-p125 的 ActionMailer 的分段错误
【发布时间】:2025-12-22 07:15:11
【问题描述】:

我很高兴使用 ActionMailer 从我的网络应用程序发送电子邮件,使用 ruby​​ 1.9.2-p180。然后我使用 RVM 升级到 ruby​​ 1.9.3-p125。

现在我每次尝试发送和发送电子邮件时都会遇到分段错误。

/Users/disaacs/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/net/smtp.rb:583: [BUG] Segmentation fault
ruby 1.9.3p125 (2012-02-16 revision 34643) [x86_64-darwin10.8.0]

-- Control frame information -----------------------------------------------
c:0092 p:---- s:0499 b:0499 l:000498 d:000498 CFUNC  :connect
c:0091 p:0059 s:0496 b:0496 l:000495 d:000495 METHOD /Users/disaacs/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/net/smtp.rb:583
c:0090 p:0255 s:0491 b:0490 l:001180 d:001180 METHOD /Users/disaacs/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/net/smtp.rb:560
c:0089 p:0047 s:0482 b:0482 l:000481 d:000481 METHOD /Users/disaacs/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/net/smtp.rb:519
c:0088 p:0496 s:0475 b:0475 l:000474 d:000474 METHOD /Users/disaacs/.rvm/gems/ruby-1.9.3-p125/gems/mail-2.3.0/lib/mail/network/delivery_methods/smtp.rb:128
c:0087 p:0031 s:0464 b:0464 l:000463 d:000463 METHOD /Users/disaacs/.rvm/gems/ruby-1.9.3-p125/gems/mail-2.3.0/lib/mail/message.rb:1989
c:0086 p:0009 s:0460 b:0460 l:000436 d:000459 BLOCK  /Users/disaacs/.rvm/gems/ruby-1.9.3-p125/gems/mail-2.3.0/lib/mail/message.rb:230
c:0085 p:0021 s:0458 b:0458 l:000440 d:000457 BLOCK  /Users/disaacs/.rvm/gems/ruby-1.9.3-p125/gems/actionmailer-3.1.1/lib/action_mailer/base.rb:432

我见过一些similar questions,但没有明确的答案。这是一个众所周知但没有答案的问题吗?

我在 OSX 10.6.8 上运行 Rails 3.1.1。

【问题讨论】:

  • 您是否使用了包含 C 扩展的 gem?
  • 不,我不这么认为。我的 Gemfile 列出了 devise、hirb、cancan、kaminari、sqlite3。
  • 另一个类似的线程似乎在指责openssl,但没有明确指责,也没有提出解决方案。
  • sqlite3 是 SQLite C 库的包装器。 Rails 本身也可能依赖于某些东西。重建有问题的宝石可能会有所帮助(或者可能会浪费时间)。
  • 重建有问题的 gem 最简单的方法是什么?而且,就此而言,哪个是令人讨厌的宝石?谢谢!

标签: ruby-on-rails smtp openssl actionmailer


【解决方案1】:

我在安装 ruby​​ 1.9.3 时遇到了与如何编译 openssl 有关的 Paperclip 类似问题。不是 100% 确定这与您遇到的问题相同,但我敢打赌。

为了解决这个问题,我在安装 rvm openssl pkg 后重新安装了 ruby​​ 和全新 gemset:

$ rvm pkg install openssl
$ rvm remove 1.9.3-p125
$ rvm install 1.9.3-p125 --with-openssl-dir=$rvm_path/usr

【讨论】:

  • 我不知道你是怎么想出来的,但它就像一个魅力。谢谢大家!