После перехода на OSX Sierra у меня возникла проблема со случайными ошибками сегментации. Это чаще всего возникает при проверке рельсов, и я считаю, что это связано с 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, не являющимся безопасным fork. Более подробную информацию можно найти здесь:
https://github.com/sparklemotion/sqlite3-ruby/issues/195
В настоящее время я создал псевдоним в нижней части моего файла ~/.bashrc:
alias ss='spring stop'
Когда проблема возникает, я могу теперь ввести:
ss
а затем повторите тест.