Segmentation fault with Rails after upgrading to O

2019-01-23 11:52发布

After upgrading to OSX Sierra I am having an issue with random segmentation faults. It most commonly occurs when running rails test and I believe it is due to the sqlite3_adapter.

My present work around is to simply quit terminal and restart it. This works for about 1 or 2 rails test and by the third one I am almost guaranteed to get another segmentation fault.

Is anybody else having an issue with this or find a better workaround?

$ rails t
Running via Spring preloader in process 13817
/Users/USER/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activerecord-5.0.0.1/lib/active_record/connection_adapters/sqlite3_adapter.rb:27: [BUG] Segmentation fault at 0x00000000000110
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin16]

Edit:

After digging into the sqlite3_adapter.rb, I see that the line causing the segmentation fault is the creation of a new SQlite3 database.

db = SQLite3::Database.new(
    config[:database].to_s,
    :results_as_hash => true
)

Edit 2:

Rather than quitting and restarting terminal, I have found that running:

spring stop

stops the problem temporarily. Not a solution, but a better work around.

Edit 3:

This appears to be a problem with Apple's supplied libsqlite3 not being fork safe. More info can be found here:

https://github.com/sparklemotion/sqlite3-ruby/issues/195

For now, I have created an alias at the bottom of my ~/.bashrc file:

alias ss='spring stop'

When the problem occurs, I can now type:

ss

and then rerun the test.

7条回答
来,给爷笑一个
2楼-- · 2019-01-23 12:38

I had the same problem when upgrading to Sierra. A simple bundle update will do the trick! Hope this helps.

查看更多
登录 后发表回答