2012-05-05 16 views
5

Martwiłem się generowaniem Acid State do wielu plików zdarzeń i punktów kontrolnych, a użytkownik "stepcut" powiedział mi, że było wdrożenie rozwiązania w kwasie o nazwie createArchive, które usuwa stare zdarzenia. . problem polega na tym, że gdy używam go otrzymuję ten błąd:Wątek zablokowany w nieskończoność - Haskell - Acid State

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

myślę, że z powodu uprawnienia W7 ale gdy uruchamiam go pod „admin” nie mogę dostać się do zobaczyć konsolę ale wydarzenia pliki są nadal więc zakładam, że nie działa.

Jeśli uruchomię kod przez ghci, nie dostaję błędu, ale blokuje konsolę, więc muszę CtrlC nadal działać.

Czy ktoś dostał ten błąd?

+2

Może to być związane z błędem w GHC 7.4.1: http://hackage.haskell.org/trac/ghc/ticket/5943 – vivian

+0

Mówi, że to naprawiono, więc jeśli ściągnę plik haskell plataform, powinienem móc pracować z tym, prawda! Dzięki – Illiax

+1

@Iliax, wątpię, czy najnowsza platforma Haskell ma jeszcze wersję 7.4.2. Jest na dłuższym cyklu wydawniczym niż GHC. – vivian

Odpowiedz

2

Z pewnością nie ma to nic wspólnego z uprawnieniami. Błąd pojawia się podczas próby odczytania z pustego MVar, do którego nikt nie może pisać, lub podobnie próbuje umieścić wartość w pamięci MVar, która jest już pełna i nie zostanie opróżniona. Oznacza to błąd w czyimś kodzie.

Jeżeli Vivian (w komentarzach) ma rację to jest związane z this GHC bug następnie this related bug sugeruje, że kompilacja z -fno-state-hack może wystarczyć jako obejście problemu. Wygląda na to, że błąd istnieje od co najmniej GHC 7.2.2, ale jest naprawiony w (do tej pory niepublikowanym) GHC 7.4.2.

Alternatywnie może to być po prostu błąd w numerze acid-state, który wydaje się znacznie wykorzystywać numery MVar. W takim przypadku powinieneś upewnić się, że używasz najnowszej wersji biblioteki, a następnie spróbuj stworzyć prosty testcase, aby inni mogli zweryfikować problem.

+0

To nie działa, chociaż nie rozumiem związanego z nim błędu u.u – Illiax

+0

Poszerzyłem nieco odpowiedź; zobacz także komentarz pozostawiony na twoje pytanie. Jeśli nie jest to błąd GHC, może to być błąd typu "acid-state", ale trudno powiedzieć bez większej ilości informacji. –

2

Ten błąd zniknął z mojego programu po skompilowaniu programu bez optymalizacji, jak w ghc --make -O0 Main.

Powiązane problemy