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

Ill*_*iax 5 haskell acid

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

<fileName.exe>: thread blocked indefinitely in an MVar operation
Run Code Online (Sandbox Code Playgroud)

我认为它是由于W7的权限,但是当我在"管理员"运行它,我不能在这里看到控制台,但这些事件的文件仍然存在,所以我认为它不工作.

如果我通过ghci运行代码,我没有收到错误,但它锁定了控制台,所以我需要CtrlC继续工作.

有人得到这个错误吗?

Ben*_*ood 2

这当然与权限无关。MVar当尝试从无人可以写入的空值中读取数据,或者尝试将值放入MVar已满且不会被清空的值时,就会出现此错误。这意味着某人的代码中存在错误。

如果 vivian(在评论中)关于此问题与GHC bug相关的说法是正确的,那么此相关 bug表明编译-fno-state-hack可能足以解决您的问题。看起来这个 bug 至少从 GHC 7.2.2 就已经存在,但在(到目前为止尚未发布)GHC 7.4.2 中得到了修复。

或者,它可能只是 中的一个错误acid-state,它似乎大量使用了MVars。在这种情况下,您应该确保您使用的是最新版本的库,然后尝试生成一个简单的测试用例,以便其他人可以验证问题。