2012-05-05 7 views
5

Я был обеспокоен тем, что Acid State генерирует множество файлов событий и контрольных точек, а пользовательский «stepcut» сказал мне, что существует реализация решения в кислоте, называемое createArchive, которое удаляет старые события. . проблема заключается в том, что, когда я использую его я получаю эту ошибку:Thread заблокирован на неопределенное время - Haskell - Acid State

<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 имеет 7.4.2. Он находится на более длинном этапе выпуска, чем GHC. – vivian

ответ

2

Это, безусловно, не имеет никакого отношения к разрешениям. Ошибка возникает при попытке чтения из пустого MVar, которому никто не может писать, или аналогичным образом пытается поместить значение в MVar, которое уже заполнено и не будет опустошено. Это означает, что в чьем-то коде есть ошибка.

Если Вивиан (в комментариях) прямо об этом быть связано с this GHC bug тогда this related bug предполагает, что компиляция с -fno-state-hack может быть достаточно для обхода проблемы. Похоже, что ошибка существует, по крайней мере, с GHC 7.2.2, но исправлена ​​в (пока не выпущенном) GHC 7.4.2.

В качестве альтернативы, это может быть ошибка в acid-state, которая, как представляется, значительно использует MVar. В этом случае вы должны убедиться, что используете последнюю версию библиотеки, а затем попробуйте создать простую тестовую пробку, чтобы другие люди могли проверить проблему.

+0

Это не работает, хотя я не понял связанную ошибку u.u – Illiax

+0

Я немного расширил ответ; см. также комментарий, который я оставил на ваш вопрос. Если это не ошибка GHC, это может быть ошибка с «кислотным состоянием», но это сложно сказать без дополнительной информации. –

2

Эта ошибка исчезла из моей программы после того, как я скомпилировал свою программу без оптимизации, как в ghc --make -O0 Main.

Смежные вопросы