Blackhole loops are not detected and reported in GHCi
While looking into #2783 I noticed this. It has never worked, and I was vaguely aware of it, but it seems we don't have a ticket.
let x = x in x
in GHCi should report
<<loop>>. One issue is that the
interruptTargetThread global var points to the
ThreadId running the expression, which will keep it alive and prevent it from being detected as deadlocked. But that's not all: I think the expression itself is being retained by the main thread (perhaps because it is bound to
it), which will cause the child thread to also stay alive.