[GHC] #10470: Allocating StablePtrs leads to GC slowdown even after they're freed

GHC ghc-devs at haskell.org
Mon Jun 1 10:05:34 UTC 2015


#10470: Allocating StablePtrs leads to GC slowdown even after they're freed
-------------------------------------+-------------------------------------
              Reporter:  bitonic     |             Owner:  simonmar
                  Type:  bug         |            Status:  new
              Priority:  normal      |         Milestone:
             Component:  Runtime     |           Version:  7.10.1
  System                             |  Operating System:  Unknown/Multiple
              Keywords:              |   Type of failure:  Runtime
          Architecture:              |  performance bug
  Unknown/Multiple                   |        Blocked By:
             Test Case:              |   Related Tickets:
              Blocking:              |
Differential Revisions:              |
-------------------------------------+-------------------------------------
 If we allocate and then free a lot of StablePtrs the GC performance will
 be degrated for the rest of the execution.

 I have attached a program that performs a GC-heavy task (foldr'ing a long
 list of Ints) before and after allocating and then freeing a million
 StablePtrs.  After the StablePtrs are freed the task takes more than twice
 as long.

 The reason for this is that {{stable_ptr_table}} in {{Stable.c}} is never
 resized, and is looped over for every GC pause.

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


More information about the ghc-tickets mailing list