Compiler nontermination on UNPACK pragmas
Feeding GHC 7.6.1 (from git) ill-advised UNPACK pragmas like
data T1 = T1 {-# UNPACK #-} !T1
results in GHC going into infinite wait; gdb reports
#1 0x0000000001f7f979 in waitCondition ()
#2 0x0000000001f68c3b in yieldCapability ()
#3 0x0000000001f712d2 in schedule ()
#4 0x0000000001f727b5 in scheduleWaitThread ()
#5 0x0000000001f6f40e in real_main ()
#6 0x0000000001f6f50a in hs_main ()
#7 0x0000000000495763 in main ()
This happens, apparently, whenever there's possible recursion through an UNPACK pragma, even in the (I think) well-formed
data T0 = T0 T1
data T1 = T1 {-# UNPACK #-} !T0
Trac metadata
| Trac field | Value |
|---|---|
| Version | 7.6.1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |