[m-rev.] for review: Enable thread-local allocation and parallel marking on more platforms.

Julien Fischer jfischer at opturion.com
Tue Aug 12 17:20:45 AEST 2014


On Tue, Aug 12, 2014 at 3:52 PM, Paul Bone <paul at bone.id.au> wrote:

> On Tue, Aug 12, 2014 at 03:32:46PM +1000, Julien Fischer wrote:
> >
> > On Tue, 12 Aug 2014, Julien Fischer wrote:
> >
> >> On Tue, 12 Aug 2014, Peter Wang wrote:
> >>
> >>> On Tue, 12 Aug 2014 11:19:25 +1000 (EST), Julien Fischer
> >>> <jfischer at opturion.com> wrote:
> >>>>
> >>>> On Tue, 12 Aug 2014, Peter Wang wrote:
> >>>>
> >>>>> I intend to apply this on the 14.01 branch.  I think it should be
> fine,
> >>>>> but if someone could test it on an SMP OS X machine (e.g. bootcheck
> in
> >>>>> hlc.par.gc) then that would be better.
> >>>>
> >>>> By "someone", do you mean me?
> >>>
> >>> Yes :)
> >>
> >> On OS X, I get the following failures when bootchecking in hlc.par.gc
> >>
> >>    hard_coded/spawn_native
> >>    hard_coded/thread_barrier_test
> >>    hard_coded/tl_backjump_test
> >>    par_conj/spawn_many
> >>    par_conj/thread_barrier
> >>
> >> All are aborting due to segmentation faults.  I'm not sure if this is
> >> a result of your patch or if it's happening anyway.   (I'll try again
> >> without your patch.)
> >
> > The above also occur without your patch; I'll look into them separately.
> >
>
> Peter pointed out that there are a number of problems in the RTS in
> general.
> I havn't yet found the time to look into these, hopefully soon.  I also
> want
> to check all the test cases too.


Was one such problem the following?

diff --git a/runtime/mercury_memory_zones.c b/runtime/mercury_memory_zones.c
index 91f9f89..df418b6 100644
--- a/runtime/mercury_memory_zones.c
+++ b/runtime/mercury_memory_zones.c
@@ -514,7 +514,7 @@ MR_next_offset(void)

     old_counter = offset_counter;
     new_counter = (old_counter + 1) % (CACHE_SLICES - 1);
-#if defined(MR_THREAD_SAFE)
+#if defined(MR_LL_PARALLEL_CONJ)
     /*
     ** The critical section here is really small, a CAS will work well.

The macros protecting MR_compare_and_swap_int and friends do
not appear to be consistent.  The declarations are protected by
MR_THREAD_SAFE
but the definitions by MR_LL_PARALLEL_CONJ.  (And for reasons that mystify
me at the moment, the whole thing breaks when I attempt to build the runtime
in hlc.par.gc.ll_debug, but not in hlc.par.gc -- that's what the above
patch works
around.)

Cheers,
Julien.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurylang.org/archives/reviews/attachments/20140812/0d25399e/attachment.html>


More information about the reviews mailing list