Skip to content
Snippets Groups Projects
Forked from Glasgow Haskell Compiler / GHC
Source project has a limited visibility.
  • Sylvain Henry's avatar
    37ad8856
    RTS: try to fix timer races · 37ad8856
    Sylvain Henry authored and Zubin's avatar Zubin committed
    * Pthread based timer was initialized started while some other parts of
      the RTS assume it is initialized stopped, e.g. in hs_init_ghc:
    
         /* Start the "ticker" and profiling timer but don't start until the
         * scheduler is up. However, the ticker itself needs to be initialized
         * before the scheduler to ensure that the ticker mutex is initialized as
         * moreCapabilities will attempt to acquire it.
         */
    
    * after a fork, don't start the timer before the IOManager is
      initialized: the timer handler (handle_tick) might call wakeUpRts to
      perform an idle GC, which calls wakeupIOManager/ioManagerWakeup
    
    Found while debugging #18033/#20132 but I couldn't confirm if it fixes
    them.
    
    (cherry picked from commit 5f3991c7)
    37ad8856
    History
    RTS: try to fix timer races
    Sylvain Henry authored and Zubin's avatar Zubin committed
    * Pthread based timer was initialized started while some other parts of
      the RTS assume it is initialized stopped, e.g. in hs_init_ghc:
    
         /* Start the "ticker" and profiling timer but don't start until the
         * scheduler is up. However, the ticker itself needs to be initialized
         * before the scheduler to ensure that the ticker mutex is initialized as
         * moreCapabilities will attempt to acquire it.
         */
    
    * after a fork, don't start the timer before the IOManager is
      initialized: the timer handler (handle_tick) might call wakeUpRts to
      perform an idle GC, which calls wakeupIOManager/ioManagerWakeup
    
    Found while debugging #18033/#20132 but I couldn't confirm if it fixes
    them.
    
    (cherry picked from commit 5f3991c7)
Code owners
Assign users and groups as approvers for specific file changes. Learn more.