FFI and Control-C

Koen Claessen koen@cs.chalmers.se
Tue, 31 Jul 2001 20:17:23 +0200 (MET DST)


Hi,

I recently started experimenting using the FFI in GHC and
GHCi.

In GHCi, one would like to press control-C in the middle of
a computation, and get back to the prompt.

It is however hard to understand how control-C and the
foreign function calls interact.

I noticed that GHCi does not react to control-C when the
program in inside a foreign function. Instead, it then
breaks when the foreign function comes back.

This behavior would be fine in many applications if it were
consistent.

However, often after I have pressed control-C, the internal
state of the foreign library is usually completely messed
up. Even beyond what one can think is possible when allowing
to abruptly break computations.

So, my questions are:

  1) Does anyone know what exactly happens when control-C is
     pressed during foreign function evaluation?

  2) Does anyone know how this can be controlled in a more
     finegrained way?

For example, in old Hugses, it was possible to use the
function "breakOn", which allowed/disallowed control-C
breaking.

/Koen.