stale .tix files can cause programs built with -fhpc to segfault
In some circumstances, programs built with -fhpc will segfault when old .tix files reference modules that no longer exist.
foo.hs
import Bar
main = print "Hello World"
Bar.hs
module Bar where
something = 1 :: Int
jwlato@compy:~/explorations$ ghc -O -fhpc foo.hs
[1 of 2] Compiling Bar ( Bar.hs, Bar.o )
[2 of 2] Compiling Main ( foo.hs, foo.o )
Linking foo ...
jwlato@compy:~/explorations$ ./foo
"Hello world"
jwlato@compy:~/explorations$ mv Bar.hs Bar.hs.orig
jwlato@compy:~/explorations$ sed -e 's/import/-- import/' -i.bak foo.hs
jwlato@compy:~/explorations$ rm *.hi; rm *.o
jwlato@compy:~/explorations$ ghc -O -fhpc foo.hs
[1 of 1] Compiling Main ( foo.hs, foo.o )
Linking foo ...
jwlato@compy:~/explorations$ ./foo
Segmentation fault
If "foo.hs" has a 'module Main where' declaration, instead of a segfault the program exits with a message that 'foo.tix' should be deleted.
Trac metadata
| Trac field | Value |
|---|---|
| Version | 7.4.2 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Code Coverage |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |