M1运行Rails系统测试时出现分段错误

5

我正在 MacBook M1 Big Sur 操作系统上运行 Rails 应用程序的系统测试,但出现了分段错误。

我使用通过 rbenv 安装的 Ruby 2.7.1。

which ruby
/Users/sc/.rbenv/shims/ruby
➜ ruby -v
ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [-darwin20]

现在问题出现在我运行Rails系统测试时。我们的系统测试使用headless_chrome Capybara驱动程序配置,这可能与分段错误有关(不确定)。当我运行测试时,会得到以下内容:
    [BUG] Segmentation fault at 0x000000001b543e20
ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [-darwin20]

-- Crash Report log information --------------------------------------------
   See Crash Report log file under the one of following:                    
     * ~/Library/Logs/DiagnosticReports                                     
     * /Library/Logs/DiagnosticReports                                      
   for more details.                                                        
Don't forget to include the above Crash Report log file in bug reports.     

-- Control frame information -----------------------------------------------
c:0001 p:---- s:0003 e:000002 (none) [FINISH]


-- Other runtime information -----------------------------------------------

* Loaded script: rails_test

* Loaded features:

    0 enumerator.so
    1 thread.rb
    2 rational.so
    3 complex.so
    4 ruby2_keywords.rb
    5 /Users/sc/.rbenv/versions/2.7.1/lib/ruby/2.7.0/-darwin20/enc/encdb.bundle
    6 /Users/sc/.rbenv/versions/2.7.1/lib/ruby/2.7.0/-darwin20/enc/trans/transdb.bundle
    7 /Users/sc/.rbenv/versions/2.7.1/lib/ruby/2.7.0/-darwin20/rbconfig.rb
    8 /Users/sc/.rbenv/versions/2.7.1/lib/ruby/2.7.0/rubygems/compatibility.rb
    9 /Users/sc/.rbenv/versions/2.7.1/lib/ruby/2.7.0/rubygems/defaults.rb
   10 /Users/sc/.rbenv/versions/2.7.1/lib/ruby/2.7.0/rubygems/deprecate.rb
   And many more lines...

有什么想法可以解决这个错误吗?

2个回答

9
由于Ruby 2.7.1 在 Apple M1 上存在 Enumerator#next 错误,导致此问题发生。Capybara 在 Capybara::Result 类中使用它。
要确保出现此问题,请使用以下最简单的 irb 代码段:[1,2,3].to_enum.next
irb(main):003:0> [1,2,3].to_enum.next
[BUG] Segmentation fault at 0x0000000004809020
ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [-darwin20]

最好的解决方案是升级到没有此漏洞的Ruby版本2.7.3。

(如果您需要快速运行测试并稍后解决核心问题,可以在本地编辑capybara的result.rb作为愚蠢的临时解决方法。但我强烈建议尽快升级Ruby版本)

更新:我已在Ruby错误跟踪器中发布了错误报告


1

当我运行测试时,遇到了同样的问题。通过Ruby更新到2.7.3版本得到了帮助。


是的,但我们在工作中使用Ruby 2.7.1进行项目开发,我无法将其更新为2.7.3。还有其他想法吗? - Salo Charabati
我的项目也使用2.7.1版本,但是我发现迁移到2.7.3版本是唯一的方法。很抱歉我无法提供帮助。 - IlyaKokorev
1
你可以放心地在 2.7.x 项目中使用 2.7.3,因为这对你没有影响。小的更新不会影响你的发布。 - Tim Kretschmer

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