Ticket #2786 (new bug)
Blackhole loops are not detected and reported in GHCi
| Reported by: | simonmar | Owned by: | |
|---|---|---|---|
| Priority: | normal | Milestone: | _|_ |
| Component: | GHCi | Version: | 6.8.3 |
| Keywords: | Cc: | patrick@… | |
| Operating System: | Unknown/Multiple | Architecture: | Unknown/Multiple |
| Type of failure: | None/Unknown | Difficulty: | Unknown |
| Test Case: | Blocked By: | ||
| Blocking: | Related Tickets: |
Description
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.
Change History
Note: See
TracTickets for help on using
tickets.
