线程无限期阻塞 - Haskell - 酸状态

时间:2012-05-05 03:02:26

标签: haskell acid

我担心酸状态会产生许多事件文件和检查点,而用户“stepcut”告诉我有一个名为createArchive的解决方案实现了删除旧事件...... 问题是,当我使用它时,我收到此错误:

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

我认为它应该获得w7权限,但是当我在'admin'下运行时,我无法看到控制台,但事件文件仍然存在,所以我认为它不起作用。

如果我通过ghci运行代码,我不会收到错误,但它会锁定控制台,所以我需要CtrlC才能继续工作。

有人得到了这个错误吗?

2 个答案:

答案 0 :(得分: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。在这种情况下,您应该确保使用最新版本的库,然后尝试生成一个简单的测试用例,以便其他人可以验证问题。

答案 1 :(得分:2)

我编译程序后没有进行优化,这个错误从我的程序中消失了,如ghc --make -O0 Main