[GHC] #12899: ghc panics at random places with -jX

#12899: ghc panics at random places with -jX -------------------------------------+------------------------------------- Reporter: pacak | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.1 Keywords: | Operating System: Unknown/Multiple Architecture: | Type of failure: None/Unknown Unknown/Multiple | Test Case: | Blocked By: Blocking: | Related Tickets: Differential Rev(s): | Wiki Page: -------------------------------------+------------------------------------- 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. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/12899 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#12899: ghc panics at random places with -jX -------------------------------------+------------------------------------- Reporter: pacak | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Changes (by pacak): * Attachment "panics" added. A list of various panics messages (each one listed twice) -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/12899 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#12899: ghc panics at random places with -jX -------------------------------------+------------------------------------- Reporter: pacak | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by pacak): I confirmed that it no longer fails if compiled with -j1. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/12899#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#12899: ghc panics at random places with -jX -------------------------------------+------------------------------------- Reporter: pacak | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by pacak): {{{ <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 }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/12899#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#12899: ghc panics at random places with -jX -------------------------------------+------------------------------------- Reporter: pacak | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (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 }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/12899#comment:3 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#12899: ghc panics at random places with -jX -------------------------------------+------------------------------------- Reporter: pacak | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by mpickering): For anyone not following along at home, the problem is that the `Unique`s 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! -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/12899#comment:4 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#12899: ghc panics at random places with -jX -------------------------------------+------------------------------------- Reporter: pacak | Owner: Type: bug | Status: closed Priority: normal | Milestone: 8.2.1 Component: Compiler | Version: 8.0.1 Resolution: fixed | Keywords: 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: | -------------------------------------+------------------------------------- Changes (by bgamari): * status: new => closed * differential: => Phab:D2844 * resolution: => fixed * milestone: => 8.2.1 Comment: 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. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/12899#comment:5 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#12899: ghc panics at random places with -jX -------------------------------------+------------------------------------- Reporter: pacak | Owner: Type: bug | Status: closed Priority: normal | Milestone: 8.2.1 Component: Compiler | Version: 8.0.1 Resolution: fixed | Keywords: 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: | -------------------------------------+------------------------------------- Comment (by simonpj): Here's the commit message I believe: In [changeset:"0d213c18b6962bb65e2b3035a258dd3f5bf454dd/ghc" 0d213c1/ghc]: {{{ #!CommitTicketReference repository="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 }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/12899#comment:6 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC