Skip to content

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
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information