2012-05-05 25 views
5

我擔心酸狀態會產生許多事件文件和檢查點,用戶「stepcut」告訴我有一個酸性解決方案的實現,名爲createArchive,它刪除了舊事件。 。 問題是,當我使用它,我得到這個錯誤:線程被無限期阻塞 - Haskell - 酸狀態

<fileName.exe>: thread blocked indefinitely in an MVar operation 

我認爲它是由於W7的權限,但是當我在「管理員」運行它,我不能在這裏看到控制檯,但這些事件的文件仍然存在所以我認爲它不工作。

如果我通過ghci運行代碼,我沒有得到一個錯誤,但它鎖定了控制檯,所以我需要CtrlC繼續工作。

有沒有人得到這個錯誤?

+2

可能與GHC 7.4.1中的錯誤有關:http://hackage.haskell.org/trac/ghc/ticket/5943 – vivian

+0

它說它是固定的,所以如果我下載haskell plataform我應該能夠工作與它,對!謝謝 – Illiax

+1

@Iliax,我懷疑最近的Haskell Platform是否有7.4.2。它的釋放週期比GHC更長。 – vivian

回答

2

這當然與權限無關。嘗試讀取無人寫入的空MVar時出現此錯誤,或者類似地嘗試將MVar中的值寫入已滿且不會清空的值。這意味着某人的代碼中存在一個錯誤。

如果vivian(在評論中)對此與this GHC bug有關,那麼this related bug建議使用-fno-state-hack進行編譯可能足以解決您的問題。看起來這個bug至少在GHC 7.2.2之後就已經存在了,但是在(目前爲止未發佈的)GHC 7.4.2中已經確定了。

或者,它可能只是acid-state中的一個錯誤,它似乎對MVar有很大的用處。在這種情況下,您應該確保您使用的是最新版本的庫,然後嘗試生成一個簡單的測試用例,以便其他人可以驗證問題。

+0

這是行不通的,雖然我不明白相關的錯誤u.u – Illiax

+0

我擴大了答案一點;另見我留給你的問題的評論。如果它不是GHC的錯誤,那很可能是一個'酸性'錯誤,但是如果沒有更多的信息很難說清楚。 –

2

在我沒有優化編譯我的程序後,這個錯誤從我的程序中消失了,如ghc --make -O0 Main