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.
Trac metadata
Trac field | Value |
---|---|
Version | 6.8.3 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | GHCi |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |