[commit: ghc] master: Fix a bug in parallel GC synchronisation (4e088b4)

git at git.haskell.org git at git.haskell.org
Sat Oct 29 18:34:08 UTC 2016


Repository : ssh://git@git.haskell.org/ghc

On branch  : master
Link       : http://ghc.haskell.org/trac/ghc/changeset/4e088b497edd83f361898fa9d2d62ff310b08945/ghc

>---------------------------------------------------------------

commit 4e088b497edd83f361898fa9d2d62ff310b08945
Author: Simon Marlow <smarlow at fb.com>
Date:   Fri Oct 28 08:30:14 2016 -0700

    Fix a bug in parallel GC synchronisation
    
    Summary:
    The problem boils down to global variables: in particular gc_threads[],
    which was being modified by a subsequent GC before the previous GC had
    finished with it.  The fix is to not use global variables.
    
    This was causing setnumcapabilities001 to fail (again!).  It's an old
    bug though.
    
    Test Plan:
    Ran setnumcapabilities001 in a loop for a couple of hours.  Before this
    patch it had been failing after a few minutes.  Not a very scientific
    test, but it's the best I have.
    
    Reviewers: bgamari, austin, fryguybob, niteria, erikd
    
    Subscribers: thomie
    
    Differential Revision: https://phabricator.haskell.org/D2654


>---------------------------------------------------------------

4e088b497edd83f361898fa9d2d62ff310b08945
 rts/Schedule.c    | 30 ++++++++++++++++--------------
 rts/sm/GC.c       | 39 +++++++++++++++++++++------------------
 rts/sm/GC.h       |  6 +++---
 rts/sm/GCThread.h |  2 --
 4 files changed, 40 insertions(+), 37 deletions(-)

Diff suppressed because of size. To see it, use:

    git diff-tree --root --patch-with-stat --no-color --find-copies-harder --ignore-space-at-eol --cc 4e088b497edd83f361898fa9d2d62ff310b08945


More information about the ghc-commits mailing list