2012-05-05 8 views
5

Estaba preocupado por la generación de estado ácido de muchos archivos de eventos y puntos de control, y el usuario "stepcut" me dijo que había una implementación de la solución en ácido llamada createArchive que eliminaba eventos antiguos. . El problema es que cuando lo uso me sale este error:Thread bloqueado indefinidamente - Haskell - Acid State

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

creo que es debido permisos w7 pero cuando lo ejecuto bajo 'admin' no puedo conseguir para ver la consola pero los acontecimientos archivos siguen ahí entonces supongo que no está funcionando.

Si ejecuto código a través de ghci, no obtengo un error, pero bloquea la consola, así que necesito CtrlC para seguir trabajando.

¿Alguien ha encontrado este error?

+2

Podría estar relacionado con un error en GHC 7.4.1: http://hackage.haskell.org/trac/ghc/ticket/5943 – vivian

+0

Dice que está arreglado, así que si descargo la plataforma haskell debería poder trabajar con eso, ¿verdad? Gracias – Illiax

+1

@Iliax, dudo que la Plataforma Haskell más reciente tenga 7.4.2 todavía. Está en un ciclo de lanzamiento más largo que GHC. – vivian

Respuesta

2

No tiene nada que ver con los permisos. El error surge al intentar leer desde un MVar vacío al que nadie puede escribir, o de manera similar, tratando de poner un valor en un MVar que ya está lleno y no va a vaciarse. Significa que hay un error en el código de alguien.

Si Vivian (en los comentarios) tiene razón en esto se relaciona con this GHC bug continuación this related bug sugiere que compilar con -fno-state-hack podría bastar como una solución para su problema. Parece que el error ha existido desde al menos GHC 7.2.2, pero está fijado en el (hasta ahora inédito) GHC 7.4.2.

Alternativamente, podría ser un error en acid-state, que parece hacer un uso significativo de MVar s. En ese caso, debe asegurarse de estar utilizando la última versión de la biblioteca, luego intente producir un caso de prueba simple para que otras personas puedan verificar el problema.

+0

Esto no funciona, aunque no entendí el error relacionado u.u – Illiax

+0

Expandí la respuesta un poco; vea también el comentario que dejé a su pregunta. Si no es el error de GHC, podría ser un error de "estado ácido", pero es difícil de decir sin más información. –

2

Este error desapareció de mi programa después de compilar mi programa sin optimizaciones, como en ghc --make -O0 Main.