
#14880: GHC panic: updateRole -------------------------------------+------------------------------------- Reporter: RyanGlScott | Owner: goldfire Type: bug | Status: new Priority: normal | Milestone: 8.8.1 Component: Compiler (Type | Version: 8.2.2 checker) | Resolution: | Keywords: TypeInType Operating System: Unknown/Multiple | Architecture: Type of failure: Compile-time | Unknown/Multiple crash or panic | Test Case: Blocked By: | Blocking: Related Tickets: #15076 | Differential Rev(s): Phab:D4769 Wiki Page: | -------------------------------------+------------------------------------- Comment (by tdammers): Replying to [comment:78 goldfire]:
Before we continue drilling in that direction, are these results reproducible? Timing is notoriously fickle, and I think it would be wise to make sure we know what we're getting into here.
Oh yes, absolutely right, and I just did exactly that. Turns out the switch from FV to VarSet increases allocations quite a bit, but not enough to explain the failure completely - only about halfway. Observe: baseline: {{{ ("bytes allocated", "1145886664") }}} with VarSet instead of fv: {{{ ("bytes allocated", "1176456040") }}} patch applied fully: {{{ ("bytes allocated", "1207902048") }}} This uses the settings from the test suite directly, and a validate build. So it should be perfectly reproducible, something like this: {{{ for NAME in T14880-baseline T14880-just-tvs T14880 do echo "$NAME" git checkout "wip/$NAME" && (make -j2 && (/usr/bin/time --verbose ~/well-typed/devel/ghc-phab/inplace/bin/ghc-stage2 -c testsuite/tests/perf/compiler/T5631.hs -fforce-recomp +RTS -V0 -tlogs/$NAME.stat --machine-readable -RTS) |& tee logs/$NAME.timing && echo "$NAME") done }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/14880#comment:79 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler