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: [EMAIL PROTECTED]
[mailto:glasgow-haskell-bugs-
| [EMAIL PROTECTED] On Behalf Of Remi Turk
| Sent: 07 March 2005 00:41
| To: [email protected]
| 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.
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to