SimonM: > [...] Can we easily identify which are the unsafe places and fix them?
Alastair: > Look at all prims with types in IO. Look at what data structures they > touch. Check if there are accesses to that data structure 'both > sides' of a call to eval (there may be a few functions which invoke > eval so watch for them). Check if any such accesses break data > structure invariants. SimonM: > Since this can affect Hugs as it stands (when you use unsafePerformIO), > would you mind taking a look? There are over 200 calls to eval() in Hugs. Almost all of them look OK on a cursory scan. As Alastair said, most are at the start of primitives, and Hugs uses its stack and local variables a lot. But there's an unsafe use in evalName(), and I don't understand the mutual recursion between eval() and run(). There's another problem with Simon's patch I haven't been able to pin down: if you run the example, interrupt it at the right point and type another expression, the finalizers run, but the expression is lost. _______________________________________________ FFI mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/ffi