
Briefly looking at the code it seems like several global variables involved
should be volatile: n_capabilities, enabled_capabilities, and
capabilities. Perhaps in a loop like in scheduleDoGC the compiler moves
the reads of n_capabilites or capabilites outside the loop. A failed
requestSync in that loop would not get updated values for those global
pointers. That particular loop isn't doing that optimization for me, but I
think it could happen without volatile.
Ryan
On Thu, Oct 27, 2016 at 9:18 AM, Ben Gamari
Simon Marlow
writes: I haven't been able to reproduce the failure yet. :(
Indeed I've also not seen it in my own local builds. It's quite an fragile failure.
Cheers,
- Ben
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs