2016-10-02 21 views
24

升級到OSX Sierra之後,我遇到了隨機分段故障的問題。它最常發生在運行rails測試時,我相信這是由於sqlite3_adapter造成的。升級到OS Sierra後Rails的分段錯誤,可能與sqlite3 gem

我目前的工作是簡單地退出終端並重新啓動它。這適用於大約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

這似乎與libsqlite3不是叉安全提供蘋果的一個問題。更多信息可以在這裏找到:

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

現在,我已經在我的〜/ .bashrc文件底部創建別名:

alias ss='spring stop' 

時出現問題,我現在可以鍵入:

ss 

然後重新運行測試。

回答

8

看起來像一個補丁已發佈!補丁將在您的brew文件夾中查找sql​​ite3,而不是默認使用Apple提供的版本。只需運行:

bundle update 

以獲取最新版本的sqlite3,紅寶石,如果你不已經SQLITE3安裝在你的自制程序目錄下,運行:

brew install sqlite3 
+0

這對我有用。這意味着它沒有符號鏈接到/ usr/local「消息中,我忽略了它沒有問題。 – ObjectNameDisplay

+2

只是簡單的說一下,這是我工作的確切命令序列:'brew install sqlite3; gem卸載sqlite3; bundle update'。 – Petros

+0

我無法得到這個工作,我已經運行了幾次以及'gem pristine sqlite3'並且仍然沒有任何工作。我正在運行ruby 2.3.3。否則我可以做什麼? – Casey

2

嘗試重建sqlite3寶石。它具有本地擴展,並在Sierra環境中重新編譯它們可能會解決此問題。

運行:

gem pristine sqlite3 

應該給像輸出:

Restoring gems to pristine condition... 
Building native extensions. This could take a while... 
Restored sqlite3-1.3.10 
Building native extensions. This could take a while... 
Restored sqlite3-1.3.11 
+1

這並沒有這樣做的工作。我嘗試卸載並重新安裝sqlite3 gem。沒有運氣。 – Hutch

+0

這是從Homebrew安裝'sqlite3'後所需的最後一步。 – Koraktor

4

升級到塞拉利昂,當我有同樣的問題。一個簡單的bundle update將做的伎倆!希望這可以幫助。

+1

這工作暫時,但它看起來像問題回來了。 :( – Hutch

+0

@Hutch同樣的事情發生在這裏。 –

+0

它幫助了我,macOS Sierra –

2

我注意到,當我試圖運行rails控制檯--sandbox時,我也遇到了segfault。我發現this other question似乎解決了這個問題;專門運行

xcode-select --install 

似乎解決了它。這絕不是科學證明,但是我現在可以運行rails控制檯和所有沒有ruby段錯誤的測試。

+0

試過了,我只是得到它們已經安裝了,謝謝你的建議! – Hutch

0

同樣的問題瓦特/塞拉利昂。這個頁面上的東西沒有爲我工作,即gem pristine sqlite3,xcode-select --install,sqlite3; gem uninstall sqlite3; bundle update。我最終完全卸載了與rbenv uninstall 2.3.1的Ruby版本,然後重新安裝它。這工作。我不知道爲什麼。

0

我面臨着同樣的問題,我升級sqlite3的寶石1.3.12和它幫助

+0

時看到了什麼,需要運行bu ndle安裝 – Aigul

0

以前所有的解決方案,沒有工作,所以我已經解決了這個辦法:

gem uninstall sqlite3

brew install sqlite3

gem install sqlite3 -- --with-sqlite3-include=/usr/local/Cellar/sqlite/3.15.2/include --with-sqlite3-lib=/usr/local/Cellar/sqlite/3.15.2/lib

(請您在酒窖擁有的版本)

這是一個臨時的解決辦法,可能如果更新包將停止工作,你會再次這樣做,但人至少我可以在我的機器

相關問題