После обновления до OSX Sierra у меня возникла проблема со случайными ошибками сегментации. Чаще всего это происходит при запуске теста rails, и я полагаю, что это связано с sqlite3_adapter.
Моя текущая работа заключается в том, чтобы просто выйти из терминала и перезапустить его. Это работает примерно для 1 или 2 тестов рельсов, и к третьему я почти гарантированно получу еще одну ошибку сегментации.
У кого-нибудь еще есть проблема с этим или найти лучший обходной путь?
$ 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]
Изменить:
Покопавшись в sqlite3_adapter.rb, я вижу, что строка, вызывающая ошибку сегментации, — это создание новой базы данных SQlite3.
db = SQLite3::Database.new(
config[:database].to_s,
:results_as_hash => true
)
Редактировать 2:
Вместо того, чтобы выйти и перезапустить терминал, я обнаружил, что работает:
spring stop
временно останавливает проблему. Не решение, а лучший обходной путь.
Редактировать 3:
Похоже, это проблема с поставляемой Apple libsqlite3, которая не является безопасной для форка. Дополнительную информацию можно найти здесь:
https://github.com/sparklemotion/sqlite3-ruby/issues/195
На данный момент я создал псевдоним внизу моего файла ~/.bashrc:
alias ss='spring stop'
Когда возникает проблема, теперь я могу ввести:
ss
а затем перезапустите тест.