[GHC] #14516: getGCStats was broken in 8.2

GHC ghc-devs at haskell.org
Thu Nov 23 12:53:58 UTC 2017


#14516: getGCStats was broken in 8.2
-------------------------------------+-------------------------------------
           Reporter:  chrisdone      |             Owner:  (none)
               Type:  bug            |            Status:  new
           Priority:  normal         |         Milestone:
          Component:                 |           Version:  8.2.1
  libraries/base                     |
           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:
-------------------------------------+-------------------------------------
 The {{{getGCStats}}} function from {{{GHC.Stats}}} defined
 [http://hackage.haskell.org/package/base-4.10.0.0/docs/GHC-Stats.html#g:2
 here] expects the {{{numGCs}}} field to be an {{{Int64}}}, but in the new
 {{{RTSStats}}} API, it's a {{{Word32}}}, so the function inside is no
 longer correct:

 {{{
 getGCStats = do
   ...
   allocaBytes ((232)) $ \p -> do
 {-# LINE 284 "GHC/Stats.hsc" #-}
     getRTSStats_ p
     bytesAllocated <- ((\hsc_ptr -> peekByteOff hsc_ptr 8)) p
 {-# LINE 286 "GHC/Stats.hsc" #-}
     numGcs <- ((\hsc_ptr -> peekByteOff hsc_ptr 0)) p
 {-# LINE 287 "GHC/Stats.hsc" #-}
     numByteUsageSamples <- ((\hsc_ptr -> peekByteOff hsc_ptr 4)) p
 }}}

 The {{{numGcs}}} line peeks off 8 bytes instead of 4, and so it leads to
 packages like my {{{weigh}}} package claiming that you've done
 "4,294,967,299" garbage collections. I've updated {{{weigh}}} to use the
 new API with some CPP {{{#if}}}'s.

 Given that the new API changes pretty much everything, both names and
 types (it took a couple hours to make weigh support the old and the new
 one), and that the old "compatibility" API is returning bad results,
 honestly I wouldn't have minded if the old API was just removed in 8.2.

 Leaving it up to you whether this should be fixed in an 8.2.3 bugfix
 release or just leave it to be removed in 8.4.

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14516>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list