Skip to content

Segfault when Rails enters parallell testing mode #39

@buffpojken

Description

@buffpojken

Steps to reproduce

Include rgeo in a Rails 7 project. Add enough tests to trigger tests running in parallell (default is 50 tests). RGeo will segfault with the attached stack trace.

Expected behavior

Tests to run as usual

Actual behavior

Segfault in proj4-communication.

System configuration

Ruby version:
3.1.0

OS:
MacOS

Stack trace

/Users/pekkaakerstrom/.rvm/gems/ruby-3.1.2/gems/rgeo-proj4-3.1.1/lib/rgeo/coord_sys/proj4.rb:191: [BUG] Segmentation fault at 0x0000000104c38a70 ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [arm64-darwin21]

c:0049 p:---- s:0264 e:000263 CFUNC  :_create
c:0048 p:0052 s:0258 e:000257 METHOD /Users/pekkaakerstrom/.rvm/gems/ruby-3.1.2/gems/rgeo-proj4-3.1.1/lib/rgeo/coord_sys/proj4.rb:191
c:0047 p:0392 s:0251 e:000250 METHOD /Users/pekkaakerstrom/.rvm/gems/ruby-3.1.2/gems/rgeo-2.4.0/lib/rgeo/geos/capi_factory.rb:66
c:0046 p:0097 s:0234 e:000233 METHOD /Users/pekkaakerstrom/.rvm/gems/ruby-3.1.2/gems/rgeo-2.4.0/lib/rgeo/geos/interface.rb:200
c:0045 p:0060 s:0228 e:000227 BLOCK  /Users/pekkaakerstrom/repos/pattern/app/models/local_plan.rb:113 [FINISH]
c:0044 p:---- s:0217 e:000216 IFUNC 
c:0043 p:---- s:0214 e:000213 CFUNC  :each
c:0042 p:---- s:0211 e:000210 CFUNC  :each_with_index
c:0041 p:0006 s:0207 e:000206 BLOCK  /Users/pekkaakerstrom/repos/pattern/app/models/local_plan.rb:107
c:0040 p:0012 s:0204 e:000203 BLOCK  /Users/pekkaakerstrom/.rvm/gems/ruby-3.1.2/gems/activerecord-7.0.3.1/lib/active_record/connection_adapters/abstract/transaction [FINISH]
c:0039 p:---- s:0197 e:000196 CFUNC  :handle_interrupt
c:0038 p:0029 s:0192 e:000191 BLOCK  /Users/pekkaakerstrom/.rvm/gems/ruby-3.1.2/gems/activesupport-7.0.3.1/lib/active_support/concurrency/load_interlock_aware_monit [FINISH]
c:0037 p:---- s:0189 e:000188 CFUNC  :handle_interrupt
c:0036 p:0021 s:0184 e:000183 METHOD /Users/pekkaakerstrom/.rvm/gems/ruby-3.1.2/gems/activesupport-7.0.3.1/lib/active_support/concurrency/load_interlock_aware_monit
c:0035 p:0008 s:0179 e:000178 METHOD /Users/pekkaakerstrom/.rvm/gems/ruby-3.1.2/gems/activerecord-7.0.3.1/lib/active_record/connection_adapters/abstract/transaction
c:0034 p:0053 s:0172 e:000171 METHOD /Users/pekkaakerstrom/.rvm/gems/ruby-3.1.2/gems/activerecord-7.0.3.1/lib/active_record/connection_adapters/abstract/database_st
c:0033 p:0011 s:0163 e:000162 METHOD /Users/pekkaakerstrom/.rvm/gems/ruby-3.1.2/gems/activerecord-7.0.3.1/lib/active_record/transactions.rb:209
c:0032 p:0016 s:0157 e:000156 METHOD /Users/pekkaakerstrom/repos/pattern/app/models/local_plan.rb:106
c:0031 p:0032 s:0147 e:000146 BLOCK  /Users/pekkaakerstrom/repos/pattern/test/models/local_plan_test.rb:35 [FINISH]
c:0030 p:0018 s:0142 e:000141 BLOCK  /Users/pekkaakerstrom/.rvm/gems/ruby-3.1.2/gems/minitest-5.16.3/lib/minitest/test.rb:98
c:0029 p:0002 s:0139 e:000138 METHOD /Users/pekkaakerstrom/.rvm/gems/ruby-3.1.2/gems/minitest-5.16.3/lib/minitest/test.rb:195
c:0028 p:0004 s:0134 e:000133 BLOCK  /Users/pekkaakerstrom/.rvm/gems/ruby-3.1.2/gems/minitest-5.16.3/lib/minitest/test.rb:95
c:0027 p:0015 s:0131 e:000130 METHOD /Users/pekkaakerstrom/.rvm/gems/ruby-3.1.2/gems/minitest-5.16.3/lib/minitest.rb:296
c:0026 p:0004 s:0126 e:000125 BLOCK  /Users/pekkaakerstrom/.rvm/gems/ruby-3.1.2/gems/minitest-5.16.3/lib/minitest/test.rb:94
c:0025 p:0029 s:0123 E:001ac0 METHOD /Users/pekkaakerstrom/.rvm/gems/ruby-3.1.2/gems/minitest-5.16.3/lib/minitest.rb:391
c:0024 p:0044 s:0115 E:001f78 METHOD /Users/pekkaakerstrom/.rvm/gems/ruby-3.1.2/gems/minitest-5.16.3/lib/minitest/test.rb:243
c:0023 p:0004 s:0108 E:0014f0 METHOD /Users/pekkaakerstrom/.rvm/gems/ruby-3.1.2/gems/minitest-5.16.3/lib/minitest/test.rb:93
c:0022 p:0008 s:0104 e:000103 BLOCK  /Users/pekkaakerstrom/.rvm/gems/ruby-3.1.2/gems/activesupport-7.0.3.1/lib/active_support/executor/test_helper.rb:5
c:0021 p:0012 s:0101 e:000100 METHOD /Users/pekkaakerstrom/.rvm/gems/ruby-3.1.2/gems/activesupport-7.0.3.1/lib/active_support/execution_wrapper.rb:105
c:0020 p:0016 s:0096 e:000095 METHOD /Users/pekkaakerstrom/.rvm/gems/ruby-3.1.2/gems/activesupport-7.0.3.1/lib/active_support/executor/test_helper.rb:5
c:0019 p:0008 s:0090 e:000089 METHOD /Users/pekkaakerstrom/.rvm/gems/ruby-3.1.2/gems/minitest-5.16.3/lib/minitest.rb:1059
c:0018 p:0015 s:0083 e:000082 BLOCK  /Users/pekkaakerstrom/.rvm/gems/ruby-3.1.2/gems/activesupport-7.0.3.1/lib/active_support/testing/parallelization/worker.rb:50
c:0017 p:0029 s:0080 E:001440 METHOD /Users/pekkaakerstrom/.rvm/gems/ruby-3.1.2/gems/minitest-5.16.3/lib/minitest.rb:391
c:0016 p:0029 s:0072 E:001238 METHOD /Users/pekkaakerstrom/.rvm/gems/ruby-3.1.2/gems/minitest-5.16.3/lib/minitest.rb:378
c:0015 p:0049 s:0065 E:001338 METHOD /Users/pekkaakerstrom/.rvm/gems/ruby-3.1.2/gems/activesupport-7.0.3.1/lib/active_support/testing/parallelization/worker.rb:49
c:0014 p:0011 s:0056 e:000055 METHOD /Users/pekkaakerstrom/.rvm/gems/ruby-3.1.2/gems/activesupport-7.0.3.1/lib/active_support/testing/parallelization/worker.rb:38
c:0013 p:0053 s:0051 e:000050 BLOCK  /Users/pekkaakerstrom/.rvm/gems/ruby-3.1.2/gems/activesupport-7.0.3.1/lib/active_support/testing/parallelization/worker.rb:27 [FINISH]
c:0012 p:---- s:0048 e:000047 CFUNC  :fork
c:0011 p:0004 s:0044 e:000043 METHOD /Users/pekkaakerstrom/.rvm/gems/ruby-3.1.2/gems/activesupport-7.0.3.1/lib/active_support/testing/parallelization/worker.rb:15
c:0010 p:0018 s:0040 e:000039 BLOCK  /Users/pekkaakerstrom/.rvm/gems/ruby-3.1.2/gems/activesupport-7.0.3.1/lib/active_support/testing/parallelization.rb:37 [FINISH]
c:0009 p:---- s:0036 e:000035 IFUNC 
c:0008 p:---- s:0033 e:000032 CFUNC  :times
c:0007 p:---- s:0030 e:000029 CFUNC  :each
c:0006 p:---- s:0027 e:000026 CFUNC  :map
c:0005 p:0008 s:0023 e:000022 METHOD /Users/pekkaakerstrom/.rvm/gems/ruby-3.1.2/gems/activesupport-7.0.3.1/lib/active_support/testing/parallelization.rb:36
c:0004 p:0023 s:0019 e:000018 METHOD /Users/pekkaakerstrom/.rvm/gems/ruby-3.1.2/gems/activesupport-7.0.3.1/lib/active_support/testing/parallelize_executor.rb:18
c:0003 p:0162 s:0015 e:000014 METHOD /Users/pekkaakerstrom/.rvm/gems/ruby-3.1.2/gems/minitest-5.16.3/lib/minitest.rb:156
c:0002 p:0073 s:0008 E:001c50 BLOCK  /Users/pekkaakerstrom/.rvm/gems/ruby-3.1.2/gems/minitest-5.16.3/lib/minitest.rb:83 [FINISH]
c:0001 p:0000 s:0003 E:001960 (none) [FINISH]```

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions