【问题标题】:Segmentation fault on M1 running a Rails System Test运行 Rails 系统测试的 M1 出现分段错误
【发布时间】:2021-05-26 23:20:33
【问题描述】:

我正在 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 system 测试时,都会出现问题。 我们的系统测试配置了 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...

关于导致此错误的任何想法?

【问题讨论】:

    标签: ruby-on-rails ruby testing segmentation-fault apple-m1


    【解决方案1】:

    这是因为bug in Enumerator#next,发生在 Apple M1 上的 ruby​​ 2.7.1 中。 Capybara 在Capybara::Result 类中使用它。

    确保这是您的情况的 simpleset irb sn-p 是 [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,没有这个bug。

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

    UPD:我在 ruby​​ 错误跟踪器中发布了 bug report

    【讨论】:

      【解决方案2】:

      我在运行测试时遇到了同样的问题。 Ruby 更新到 2.7.3 帮助了我

      【讨论】:

      • 是的,但我们正在将 Ruby 2.7.1 用于工作项目,我无法将 Ruby 更新到 2.7.3。还有其他想法吗?
      • 我的项目也使用 2.7.1,但迁移到 2.7.3 是我找到的唯一方法。对不起,我帮不上忙
      • 您可以安全地将 2.7.3 用于 2.7.x 项目,因为它不会对您产生影响。次要更新不会影响您的发布。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-12
      • 2021-07-03
      • 1970-01-01
      相关资源
      最近更新 更多