[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