Opened 3 years ago

Closed 3 years ago

Last modified 3 years ago

#12899 closed bug (fixed)

ghc panics at random places with -jX

Reported by: pacak Owned by:
Priority: normal Milestone: 8.2.1
Component: Compiler Version: 8.0.1
Keywords: Cc:
Operating System: Unknown/Multiple Architecture: Unknown/Multiple
Type of failure: None/Unknown Test Case:
Blocked By: Blocking:
Related Tickets: Differential Rev(s): Phab:D2844
Wiki Page:

Description

Affected versions: pretty much all the things from early ghc8 until most recent.

Symptoms: Out of 106 clean builds 36 failed with random ghc panic. By random I mean no two are alike. There are 525 files in a project and compilation goes in parallel with -j8. Other than panic in 21 cases it generates type errors (types are perfectly fine and whatever is under "with actual type" is something that probably exists in the same file or at least in the project itself but totally unrelated to what type an expression actually is. And even in those cases where ghc fails at the same file it usually results in different panic messages.

What was checked:

Stale interface files: No, ghc is told to use a separate build directory build system removes it

bad memory/random file system corruption: No, ghc 7.10 builds the same codebase just fine and it also fails on other machines

strange packages in user package database: No, ghc is told to ignore those

ghc was reinstalled several times with system package db wiped.

Attachments (1)

panics (38.3 KB) - added by pacak 3 years ago.
A list of various panics messages (each one listed twice)

Download all attachments as: .zip

Change History (7)

Changed 3 years ago by pacak

Attachment: panics added

A list of various panics messages (each one listed twice)

comment:1 Changed 3 years ago by pacak

I confirmed that it no longer fails if compiled with -j1.

comment:2 Changed 3 years ago by pacak

I'm pretty sure this assertion failure is unrelated: -jX panic usually goes away if restart compilation by runnig ghc --make once more or with -j1. This one - does not. I'll try to create a small reproduceable case.

Ghc master as of 20161202 compiled with devel2 flavor panics:

<no location info>: error:
    ghc: panic! (the 'impossible' happened)
  (GHC version 8.1.20161202 for x86_64-unknown-linux):
        ASSERT failed!
  in_scope InScope {wild_00 eta_Xb8 ds4_azye z_azyh s7_azyl ds5_azyr
                    wild5_azBv v3_azBx i_azBy wild7_azBI x_azBP y_azCG wild9_azCK
                    wild_a2Buo x_a2Bux xs1_a2BuC wild_azHBp dt_azHBx ds1_azHBz
                    ds2_azHBA ds3_azHBB $c==_aCmLf $c/=_aCmLs $cshowsPrec_aCmLH
                    $cshow_aCmMu $cshowList_aCmME $cshowsPrec_aCn9Q $cshow_aCnbg
                    $cshowList_aCnbs $cbasicUnsafeFreeze_aCnbK $cbasicUnsafeThaw_aCncb
                    $cbasicLength_aCncD $cbasicUnsafeSlice_aCncL
                    $cbasicUnsafeIndexM_aCncX $cbasicUnsafeCopy_aCndC $celemseq_aCndV
                    $cbasicLength_aCneq $cbasicUnsafeSlice_aCneE $cbasicOverlaps_aCneW
                    $cbasicUnsafeNew_aCnfa $cbasicInitialize_aCnfz
                    $cbasicUnsafeReplicate_aCnfQ $cbasicUnsafeRead_aCngr
                    $cbasicUnsafeWrite_aCnhc $cbasicClear_aCnhG $cbasicSet_aCnhZ
                    $cbasicUnsafeCopy_aCnix $cbasicUnsafeMove_aCniW
                    $cbasicUnsafeGrow_aCnjj $dVector_aCnST $cbasicUnsafeFreeze_aCogp
                    $cbasicUnsafeThaw_aCogP $cbasicLength_aCohe
                    $cbasicUnsafeSlice_aCohm $cbasicUnsafeIndexM_aCohw
                    $cbasicUnsafeCopy_aCoi7 $celemseq_aCois $cbasicLength_aCoj5
                    $cbasicUnsafeSlice_aCojo $cbasicOverlaps_aCojH
                    $cbasicUnsafeNew_aCojY $cbasicInitialize_aCokp
                    $cbasicUnsafeReplicate_aCokL $cbasicUnsafeRead_aColG
                    $cbasicUnsafeWrite_aComl $cbasicClear_aCon3 $cbasicSet_aConq
                    $cbasicUnsafeCopy_aCooe $cbasicUnsafeMove_aCooD
                    $cbasicUnsafeGrow_aCop0 xs_aCqkO ibaInst ibaBid ibaAsk $tc'IBA
                    $tcInstBidAsk $fEqInstBidAsk $fShowInstBidAsk ibaAsk_ ibaBid_
                    ibaInst_ ibaBary makeOTMSpreads useMaxQty otmSampleAndWeight
                    evalInstFitness $fVectorVectorInstBidAsk $fMVectorMVectorInstBidAsk
                    $fUnboxInstBidAsk $tc'InstFitnessFunction $tcInstFitnessFunction
                    $fShowInstFitnessFunction mkInstFitnessFunction fitnessFunction
                    evalFitnessFunction modifyFitnessFunctionForSpotChange calcFitness
                    calcDeltaVector td_now td_inst unitTests
                    $fVectorVectorInstFitnessFunction
                    $fMVectorMVectorInstFitnessFunction $fUnboxInstFitnessFunction
                    $trModule $cbasicUnsafeSlice_sCqRU $cbasicUnsafeSlice_sCqXB
                    $cbasicUnsafeSlice_sCryL $cbasicUnsafeSlice_sCrJw $trModule_sCrSA
                    $trModule_sCrSB $tc'IBA_sCrSD $tcInstBidAsk_sCrSE
                    $tc'InstFitnessFunction_sCrSF $tcInstFitnessFunction_sCrSH
                    $cshowList_sCrTr $cshowList_sCrTH $cbasicUnsafeThaw_sCueJ
                    $cbasicUnsafeThaw_sCuEw $dVector_sCvzg $dUnbox_sCvzh $sunzip_sCvHL
                    $snew_sCvHV $sunstream_sCvI0 $sunstream_sCvID $szipWithM_sCvJj
                    $slift_sCvJo $sstream_sCvJv $sconsume_sCvJE
                    $s$fVectorVector(,)_$cbasicUnsafeFreeze_sCvJS
                    $s$fVectorVector(,)_$cbasicUnsafeThaw_sCvK1
                    $s$fVectorVector(,)_$cbasicUnsafeIndexM_sCvKg
                    $s$fVectorVector(,)_$celemseq_sCvKs
                    $s$fMVectorMVector(,)_$cbasicUnsafeNew_sCvKV
                    $s$fMVectorMVector(,)_$cbasicUnsafeReplicate_sCvL9
                    $s$fMVectorMVector(,)_$cbasicUnsafeRead_sCvLh
                    $s$fMVectorMVector(,)_$cbasicUnsafeGrow_sCvLH $slength_sCvLX
                    $sfilter_sCvM5 $simap_sCvMq $simap_sCvMw $sunstream_sCvME
                    $sstream_sCvNg $ssum_sCvNx $sfoldlM'_sCvNF $sstream_sCvNL
                    $szipWith_sCvNX $szipWithM_sCvO8 $sstream_sCvOi $sstream_sCvOu
                    $sunstream_sCvOI $snew_sCvPg $stoNum_sCvPk $smergeWithKey_sCvPv
                    $sfromList_sCvQX $sunstreamR_sCvVf $sstreamR_sCvWB $snull_sCvWZ
                    $s$dmshow_sCvX6 $sshows_sCvXa $slookup_sCvXm $slift_sCvXv
                    $smapM_sCvXE $sunstreamM_sCvXK
                    $s$fVectorVector(,)_$cbasicUnsafeFreeze_sCvYt
                    $s$fVectorVector(,)_$cbasicUnsafeThaw_sCvYE
                    $s$fVectorVector(,)_$cbasicUnsafeIndexM_sCvYV
                    $s$fVectorVector(,)_$celemseq_sCvZ5
                    $s$fVectorVector(,,)_$cbasicUnsafeFreeze_sCvZh
                    $s$fVectorVector(,,)_$cbasicUnsafeThaw_sCvZt
                    $s$fVectorVector(,,)_$cbasicUnsafeIndexM_sCvZR
                    $s$fVectorVector(,,)_$cbasicUnsafeCopy_sCw00
                    $s$fVectorVector(,,)_$celemseq_sCw09
                    $s$fMVectorMVector(,,)_$cbasicUnsafeNew_sCw0E
                    $s$fMVectorMVector(,,)_$cbasicInitialize_sCw0Q
                    $s$fMVectorMVector(,,)_$cbasicUnsafeReplicate_sCw0Z
                    $s$fMVectorMVector(,,)_$cbasicUnsafeRead_sCw1c
                    $s$fMVectorMVector(,,)_$cbasicUnsafeWrite_sCw1p
                    $s$fMVectorMVector(,,)_$cbasicClear_sCw1y
                    $s$fMVectorMVector(,,)_$cbasicSet_sCw1H
                    $s$fMVectorMVector(,,)_$cbasicUnsafeCopy_sCw1P
                    $s$fMVectorMVector(,,)_$cbasicUnsafeMove_sCw1W
                    $s$fMVectorMVector(,,)_$cbasicUnsafeGrow_sCw27
                    $s$fVectorVector(,,,)_$cbasicUnsafeFreeze_sCw2m
                    $s$fVectorVector(,,,)_$cbasicUnsafeThaw_sCw2D
                    $s$fVectorVector(,,,)_$cbasicUnsafeIndexM_sCw34
                    $s$fVectorVector(,,,)_$cbasicUnsafeCopy_sCw3i
                    $s$fVectorVector(,,,)_$celemseq_sCw3t
                    $s$fMVectorMVector(,,,)_$cbasicUnsafeNew_sCw42
                    $s$fMVectorMVector(,,,)_$cbasicInitialize_sCw4j
                    $s$fMVectorMVector(,,,)_$cbasicUnsafeReplicate_sCw4s
                    $s$fMVectorMVector(,,,)_$cbasicUnsafeRead_sCw4G
                    $s$fMVectorMVector(,,,)_$cbasicUnsafeWrite_sCw4W
                    $s$fMVectorMVector(,,,)_$cbasicClear_sCw55
                    $s$fMVectorMVector(,,,)_$cbasicSet_sCw5f
                    $s$fMVectorMVector(,,,)_$cbasicUnsafeCopy_sCw5r
                    $s$fMVectorMVector(,,,)_$cbasicUnsafeMove_sCw5B
                    $s$fMVectorMVector(,,,)_$cbasicUnsafeGrow_sCw5K
                    $s$fMVectorMVector(,,,)_$cbasicOverlaps_sCw5Z
                    $s$fMVectorMVector(,,,)_$cbasicUnsafeSlice_sCw60
                    $s$fMVectorMVector(,,,)_$cbasicLength_sCw61
                    $s$fVectorVector(,,,)_$cbasicUnsafeSlice_sCw62
                    $s$fVectorVector(,,,)_$cbasicLength_sCw63
                    $s$fMVectorMVector(,,)_$cbasicOverlaps_sCw65
                    $s$fMVectorMVector(,,)_$cbasicUnsafeSlice_sCw66
                    $s$fMVectorMVector(,,)_$cbasicLength_sCw67
                    $s$fVectorVector(,,)_$cbasicUnsafeSlice_sCw69
                    $s$fVectorVector(,,)_$cbasicLength_sCw6a $s$fVectorVector(,)_sCw6b
                    $s$fVectorVector(,)_$cbasicUnsafeCopy_sCw6c
                    $s$fVectorVector(,)_$cbasicUnsafeSlice_sCw6d
                    $s$fVectorVector(,)_$cbasicLength_sCw6e $smapM_sCw6f $s=<<_sCw6h
                    $s$fEq(,)_$c==_sCw6i $s$fShow(,)_$cshowsPrec_sCw6j $s$dmshow_sCw6k
                    $sshows_sCw6l $snull_sCw6m $sscanl1'_sCw6n $sscanr1'_sCw6o
                    $sfromList_sCw6p $sbyEq_sCw6q $stoNum_sCw6r $szipWith_sCw6s
                    $s!?_sCw6u $snew_sCw6v $slength_sCw6w $sapproxEq_sCw6x
                    $s$fUnbox(,)_sCw6y $s$fMVectorMVector(,)_sCw6z
                    $s$fMVectorMVector(,)_$cbasicUnsafeMove_sCw6A
                    $s$fMVectorMVector(,)_$cbasicUnsafeCopy_sCw6B
                    $s$fMVectorMVector(,)_$cbasicSet_sCw6C
                    $s$fMVectorMVector(,)_$cbasicClear_sCw6D
                    $s$fMVectorMVector(,)_$cbasicUnsafeWrite_sCw6E
                    $s$fMVectorMVector(,)_$cbasicInitialize_sCw6G
                    $s$fMVectorMVector(,)_$cbasicOverlaps_sCw6H
                    $s$fMVectorMVector(,)_$cbasicUnsafeSlice_sCw6I
                    $s$fMVectorMVector(,)_$cbasicLength_sCw6J $s$fVectorVector(,)_sCw6K
                    $s$fVectorVector(,)_$cbasicUnsafeCopy_sCw6L
                    $s$fVectorVector(,)_$cbasicUnsafeSlice_sCw6M
                    $s$fVectorVector(,)_$cbasicLength_sCw6N $szipWithM__sCw6P
                    $snew_sCw6Q lvl_sCw72 lvl_sCw76 lvl_sCw7c lvl_sCw7h lvl_sCw7r
                    lvl_sCw7C lvl_sCw7I lvl_sCw7O lvl_sCw7R lvl_sCw7Z lvl_sCw88
                    lvl_sCwn8 lvl_sCwuy lvl_sCwyz ipv1_sCwzG lvl_sCx2j lvl_sCx2I
                    $stoNum_sCACQ $ssum_sCBcu $slength_sCOwz $snull_sCRhQ lvl_sCRwH
                    lvl_sCSUV evalFitnessFunction_sCTgx ds_sCTtG ~~~_sCTtR
                    $sconsume_sCWPn foldlM_loop_sCYyL unitTests_sDkwU unitTests_sDkwV
                    unitTests_sDkxV unitTests_sDkxW unitTests_sDkxX unitTests_sDkxY
                    unitTests_sDkxZ unitTests_sDky0 unitTests_sDky2 unitTests_sDky3
                    unitTests_sDkya unitTests_sDkyb unitTests_sDkyc unitTests_sDkye
                    unitTests_sDkyf unitTests_sDkyh unitTests_sDkyi unitTests_sDkyj
                    unitTests_sDkyl unitTests_sDkym unitTests_sDkyp unitTests_sDkyq
                    unitTests_sDkyr unitTests_sDkyt unitTests_sDkyu unitTests_sDkyx
                    unitTests_sDkyy unitTests_sDkyz unitTests_sDkyC unitTests_sDkyD
                    unitTests_sDkyG unitTests_sDkyH unitTests_sDkyI unitTests_sDkyK
                    unitTests_sDkyL unitTests_sDkyN unitTests_sDkyO unitTests_sDkyP
                    unitTests_sDkyR unitTests_sDkyS unitTests_sDkyU unitTests_sDkyW
                    unitTests_sDkyX unitTests_sDkyZ unitTests_sDkz0 unitTests_sDkz4
                    unitTests_sDkz5 unitTests_sDkz6 unitTests_sDkz8 unitTests_sDkza
                    unitTests_sDkze unitTests_sDkzf unitTests_sDkzg unitTests_sDkzi
                    unitTests_sDkzj unitTests_sDkzn unitTests_sDkzo unitTests_sDkzp
                    unitTests_sDkzs unitTests_sDkzt unitTests_sDkzy unitTests_sDkzz
                    unitTests_sDkzA unitTests_sDkzD unitTests_sDkzE unitTests_sDkzG
                    unitTests_sDkzH unitTests_sDkzI unitTests_sDkzK unitTests_sDkzL
                    unitTests_sDkzO unitTests_sDkzP unitTests_sDkzQ unitTests_sDkzT
                    unitTests_sDkzU unitTests_sDkzW unitTests_sDkzY unitTests_sDkzZ
                    unitTests_sDkA6 unitTests_sDkA7 unitTests_sDkA8 $szipWithM__sDm6V
                    unitTests_sDoQH $j_sDylm $wotmSampleAndWeight_sE07u $w$c==_sE08Z
                    $wtoOrdinal1_sE09E $wfromOrd2_sE0a3 $w$cshowsPrec_sE0aB
                    $w$cshowsPrec_sE0aZ $wcalcDeltaVector_sE0pa $wuseMaxQty_sE0qL
                    $w$ssum_sE0UI lvl_sEhjh lvl_sEhjC lvl_sEhkq lvl_sEhkr lvl_sEhks
                    lvl_sEhku lvl_sEhkG lvl_sEhkH $wtoDiff2_sEhkJ lvl_sEhkK lvl_sEhkL
                    lvl_sEhkM lvl_sEhle lvl_sEhlf lvl_sEhlg lvl_sEhlh lvl_sEhly
                    lvl_sEhlz lvl_sEhlA lvl_sEhlB lvl_sEhwT lvl_sEhwU lvl_sEhwV
                    lvl_sEhwW lvl_sEhwX lvl_sEhwY lvl_sEhx0 lvl_sEhx1 lvl_sEhx2
                    lvl_sEhx3 lvl_sEhx8 lvl_sEhx9 lvl_sEhxc lvl_sEhxd lvl_sEhxe
                    lvl_sEhxf lvl_sEhFI lvl_sEhFU foldlM_loop_sEhGN wild_sEhH7 dt_sEhH8
                    dt1_sEhH9 dt2_sEhHa wild_sEhHc dt_sEhHd dt1_sEhHe dt2_sEhHf
                    wild_sEhHh dt_sEhHi dt1_sEhHj dt2_sEhHk lvl_sEhJh lvl_sEhJi
                    lvl_sEhJj lvl_sEhJk lvl_sEhN8 lvl_sEhNk lvl_sEhNx lvl_sEhNI
                    lvl_sEhOD foldlM_loop_sEhRb go2_sEhTm go2_sEhTo lvl_sEhTt lvl_sEhTw
                    merge_sEhUl lvl_sEhV5 merge_sEhVc $j_sEhWi lvl_sEi3O lvl_sEi41
                    lvl_sEiwB lvl_sEiwN lvl_sEiNk lvl_sEiNy lvl_sEiWh lvl_sEiX4
                    lvl_sEiX5 lvl_sEiX6 poly_$j_sEj1Y lvl_sEj20 foldlM_loop_sEj3j
                    foldlM_loop_sEjal lvl_sEjdN lvl_sEjdO lvl_sEjdR lvl_sEjdT lvl_sEjdU
                    lvl_sEjdY lvl_sEje3 lvl_sEje4 lvl_sEje7 lvl_sEjeb lvl_sEjed
                    lvl_sEjee lvl_sEjei lvl_sEjel lvl_sEjem lvl_sEjen lvl_sEjeo
                    lvl_sEjes lvl_sEjet lvl_sEjev lvl_sEjex lvl_sEjey lvl_sEjeC
                    lvl_sEjeD lvl_sEjeG lvl_sEjeH lvl_sEjeI lvl_sEjeS lvl_sEjeT
                    lvl_sEjf2 lvl_sEjf3 lvl_sEjfd lvl_sEjfe lvl_sEjfh lvl_sEjfm
                    lvl_sEjfn lvl_sEjfq lvl_sEjfv lvl_sEjfw lvl_sEjfz lvl_sEjfC
                    lvl_sEjfE lvl_sEjfF lvl_sEjfI lvl_sEjfN lvl_sEjfO lvl_sEjfY
                    lvl_sEjfZ lvl_sEjg8 lvl_sEjg9 lvl_sEjgb lvl_sEjgc lvl_sEjgd
                    lvl_sEjge lvl_sEjgf lvl_sEjgg lvl_sEjgh lvl_sEjgi lvl_sEjgj
                    lvl_sEjgk lvl_sEjgl lvl_sEjgm lvl_sEjgn lvl_sEjgo lvl_sEjgp
                    lvl_sEjh7 loc_sEjj2 loc_sEjj4 loc_sEjja loc_sEjjc loc_sEjje
                    $dIP_sEjjg $dIP_sEjji $dIP_sEjjk lvl_sEjjX lvl_sEjjY lvl_sEjk7
                    lvl_sEjk9 lvl_sEjka lvl_sEjkb lvl_sEjkc lvl_sEjki lvl_sEjkj
                    lvl_sEjkk lvl_sEjkl lvl_sEjkn lvl_sEjko lvl_sEjkp lvl_sEjkq
                    lvl_sEjmW lvl_sEjmX lvl_sEjmY lvl_sEjmZ lvl_sEjnR lvl_sEjnS
                    lvl_sEjnT lvl_sEjnU lvl_sEjnZ lvl_sEjo0 lvl_sEjo1 lvl_sEjo2
                    lvl_sEjo8 lvl_sEjo9 lvl_sEjoa lvl_sEjob lvl_sEjoh lvl_sEjoi
                    lvl_sEjoj lvl_sEjok lvl_sEjor lvl_sEjos lvl_sEjot lvl_sEjou
                    lvl_sEjox lvl_sEjoy lvl_sEjoz lvl_sEjoA lvl_sEjoM lvl_sEjoN
                    lvl_sEjoO lvl_sEjoP $sfoldlM_loop_sEwVd $sgo2_sExlJ $sgo2_sExlL
                    $smerge_sExnj $smerge_sExnm $smerge_sExo8 $smerge_sExon sc_sExtw
                    sc_sExtx sc_sExty $s$j_sExtS}
  tenv []
  tenvFVs []
  cenv [sExtz :-> sg_sExtz]
  cenvFVs [sExtz :-> sg_sExtz]
  tys [PrimState (ST RealWorld)]
  cos []
  Call stack:
      CallStack (from HasCallStack):
        prettyCurrentCallStack, called at compiler/utils/Outputable.hs:1114:58 in ghc:Outputable
        callStackDoc, called at compiler/utils/Outputable.hs:1163:22 in ghc:Outputable
        assertPprPanic, called at compiler/types/TyCoRep.hs:2023:56 in ghc:TyCoRep
        checkValidSubst, called at compiler/types/TyCoRep.hs:2056:17 in ghc:TyCoRep
        substTy, called at compiler/types/Coercion.hs:1457:33 in ghc:Coercion
  Call stack:
      CallStack (from HasCallStack):
        prettyCurrentCallStack, called at compiler/utils/Outputable.hs:1114:58 in ghc:Outputable
        callStackDoc, called at compiler/utils/Outputable.hs:1118:37 in ghc:Outputable
        pprPanic, called at compiler/utils/Outputable.hs:1161:5 in ghc:Outputable
        assertPprPanic, called at compiler/types/TyCoRep.hs:2023:56 in ghc:TyCoRep
        checkValidSubst, called at compiler/types/TyCoRep.hs:2056:17 in ghc:TyCoRep
        substTy, called at compiler/types/Coercion.hs:1457:33 in ghc:Coercion

Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug

Last edited 3 years ago by pacak (previous) (diff)

comment:3 Changed 3 years ago by pacak

After recompilation in devel2 mode, one of the panics:


<no location info>: error:
    ghc: panic! (the 'impossible' happened)
  (GHC version 8.1.20161206 for x86_64-unknown-linux):
        applyTypeToArgs
  Expression: $fDataFixity_$cgmapQ
                @ (Exchange ByteString ByteString)
                @ Identity
                ($fProfunctorExchange @ ByteString @ ByteString)
                $fFunctorIdentity
  Type: forall u. (forall d. Data d => d -> u) -> Fixity -> [u]
  Args: [TYPE: Exchange ByteString ByteString, TYPE: Identity,
         $fProfunctorExchange @ ByteString @ ByteString, $fFunctorIdentity]
  Call stack:
      CallStack (from HasCallStack):
        prettyCurrentCallStack, called at compiler/utils/Outputable.hs:1114:58 in ghc:Outputable
        callStackDoc, called at compiler/utils/Outputable.hs:1118:37 in ghc:Outputable
        pprPanic, called at compiler/coreSyn/CoreUtils.hs:181:14 in ghc:CoreUtils

Please report this as a GHC bug:  http://www.haskell.org/ghc/reportabug

comment:4 Changed 3 years ago by mpickering

For anyone not following along at home, the problem is that the Uniques were overflowing. The UniqSupply counter was reaching over 25 million but only 24 bits (around 17 million) were being used to store the uniques. This led to uniques being allocated multiple times.

The failures were different each time because the overflow was only bad if it overflowed into the same label and then we relied on this unique at some point in compilation (to do an equality check for example). It was a coincidence that compiling with -j1 didn't trigger these problems, it must have been the ordering these uniques were applied didn't cause terrible things like this to happen.

Ben has produced a diff (D2844) which bumps the number of bits we use so hopefully this is never a problem again!

comment:5 Changed 3 years ago by bgamari

Differential Rev(s): Phab:D2844
Milestone: 8.2.1
Resolution: fixed
Status: newclosed

This was addressed by Phab:D2844, as mentioned by mpickering above. Unfortunately, I cited the wrong ticket in the commit description, so the commit message didn't make it here.

comment:6 Changed 3 years ago by simonpj

Here's the commit message I believe:

In 0d213c1/ghc:

revision="0d213c18b6962bb65e2b3035a258dd3f5bf454dd"
UniqSupply: Use full range of machine word

Currently uniques are 32-bits wide. 8 of these bits are for the unique
class, leaving only 24 for the unique number itself. This seems
dangerously small for a large project. Let's use the full range of the
native machine word.

We also add (now largely unnecessary) overflow check to ensure that the
unique number doesn't overflow.

Test Plan: Validate

Reviewers: simonmar, austin, niteria

Reviewed By: niteria

Subscribers: mpickering, thomie

Differential Revision: https://phabricator.haskell.org/D2844

GHC Trac Issues: #12944
Last edited 3 years ago by simonpj (previous) (diff)
Note: See TracTickets for help on using tickets.