6.4.20050304 RULES panic from CgMonad.lhs & other nastiness
Simon Peyton-Jones
simonpj at microsoft.com
Mon Mar 7 12:07:05 EST 2005
Excellent bug. It's been there a long time. You seem to have a talent
for finding dark corners in GHC!
Anyway, it's fixed, and a test added.
SImon
| -----Original Message-----
| From: glasgow-haskell-bugs-bounces at haskell.org
[mailto:glasgow-haskell-bugs-
| bounces at haskell.org] On Behalf Of Remi Turk
| Sent: 07 March 2005 00:41
| To: glasgow-haskell-bugs at haskell.org
| Subject: 6.4.20050304 RULES panic from CgMonad.lhs & other nastiness
|
| Hi,
|
| while still trying to get Data.HashTable to work both in ST and
| IO (I'll probably start complaining about optimizations not
| performed once this is fixed ;), I bumped into the following
| nastiness.
|
| Comments interleaved with shell copy-paste-work.
|
|
| % make clean
| rm -f *.o *.hi a.out
|
|
| % /var/tmp/ghc/bin/ghc --make -O Main.hs
| Chasing modules from: Main.hs
| Compiling MHashTable ( ./MHashTable.hs, ./MHashTable.o )
| Compiling Main ( Main.hs, Main.o )
| ghc-6.4.20050304: panic! (the `impossible' happened, GHC version
6.4.20050304):
| cgPanic
| zdfMutHashSTArray{v a1ip}
| static binds for:
| local binds for:
| SRT labelghc-6.4.20050304: panic! (the `impossible' happened,
GHC version 6.4.20050304):
| initC: srt
|
| Okay, it dies. Almost any new change in the source makes this one
| go away. The next panic is probably partly a consequence of this
| one: MHashTable.o already exists and GHC can't cope with that for
| some reason. That reason may of course be that MHashTable.o
| contains garbage due to the previous bug.
|
|
| % /var/tmp/ghc/bin/ghc --make -O Main.hs
| Chasing modules from: Main.hs
| Skipping MHashTable ( ./MHashTable.hs, ./MHashTable.o )
| ghc-6.4.20050304: panic! (the `impossible' happened, GHC version
6.4.20050304):
| tcIfaceGlobal (local): not found:
| MHashTable.updateST{v r87}
| [(rr, Identifier `MHashTable.zdfMutHashSTArray{v rr}'),
| (rs, Type constructor `MHashTable.HT{tc rs}'),
| (rt, Identifier `MHashTable.dir{v rt}'),
| (ru, Data constructor `MHashTable.HT{d ru}'),
| (rv, Identifier `MHashTable.HT{v rv}'),
| (rw, Type constructor `MHashTable.HashTable{tc rw}'),
| (rx, Data constructor `MHashTable.HashTable{d rx}'),
| (ry, Identifier `MHashTable.zdWHashTable{v ry}'),
| (rz, Type constructor `MHashTable.STHashTable{tc rz}'),
| (rA, Class `MHashTable.MutHash{tc rA}'),
| (rB, Type constructor `MHashTable.ZCTMutHash{tc rB}'),
| (rC, Data constructor `MHashTable.ZCDMutHash{d rC}'),
| (rD, Identifier `MHashTable.ZCDMutHash{v rD}'),
| (rE, Identifier `MHashTable.newMHArray{v rE}'),
| (rF, Identifier `MHashTable.readMHArray{v rF}'),
| (rG, Identifier `MHashTable.writeMHArray{v rG}'),
| (rH, Identifier `MHashTable.newMHRef{v rH}'),
| (rI, Identifier `MHashTable.readMHRef{v rI}'),
| (rJ, Identifier `MHashTable.writeMHRef{v rJ}'),
| (rK, Identifier `MHashTable.zdp1MutHash{v rK}'),
| (rL, Identifier `MHashTable.new{v rL}'),
| (rM, Identifier `MHashTable.update{v rM}'),
| (rN, Identifier `MHashTable.zdwpolyzuwriteMHArray{v rN}'),
| (rO, Identifier `MHashTable.polyzuwriteMHArray{v rO}'),
| (rP, Identifier `MHashTable.lit{v rP}'),
| (rQ, Identifier `MHashTable.lvl{v rQ}'),
| (rR, Identifier `MHashTable.zdwnew{v rR}')]
|
|
| % make clean
| rm -f *.o *.hi a.out
|
| Removing all generated files: A Fresh Start with another
| definition of "new" (see attachment):
|
|
| % /var/tmp/ghc/bin/ghc --make -Dnew_undef -no-recomp -O Main.hs
| Chasing modules from: Main.hs
| Compiling MHashTable ( ./MHashTable.hs, ./MHashTable.o )
| Compiling Main ( Main.hs, Main.o )
| Linking ...
| Main.o(.text+0x57): undefined reference to
`MHashTable_updateST_closure'
| Main.o(.rodata+0x0): undefined reference to
`MHashTable_updateST_closure'
| collect2: ld returned 1 exit status
|
|
| Finally, executing the previous command again gives _another_
| error, which is rather weird given that "-no-recomp" is given...
|
|
| % /var/tmp/ghc/bin/ghc --make -Dnew_undef -no-recomp -O Main.hs
| Chasing modules from: Main.hs
| Compiling MHashTable ( ./MHashTable.hs, ./MHashTable.o )
| Compiling Main ( Main.hs, Main.o )
| ghc-6.4.20050304: panic! (the `impossible' happened, GHC version
6.4.20050304):
| lookupVers1 MHashTable updateST{v}
|
| Good night,
| Remi
|
| --
| Nobody can be exactly like me. Even I have trouble doing it.
More information about the Glasgow-haskell-bugs
mailing list