2012-05-05 36 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