Branch updates
Reini Urban
rurban at x-ray.at
Fri Jan 4 23:17:16 UTC 2013
On Thu, Jan 3, 2013 at 12:23 AM, Jonathan "Duke" Leto <jonathan at leto.net> wrote:
> I don't see any recent updates to api.yaml, is there anything from your
> recent branch merges that should be listed there?
Thanksfully nothing.
>> rurban/pcre-dynext_libs-gh302
>> new dynext_dirs config entry, new ENV var PARROT_DYNEXT, new
>> add_env_paths()
>> test in lib_search_path.t
>
> It doesn't look like the new environment variables have any user-visible
> documentation. I would prefer to defer merging until we have new some
> documentation with examples of why and how our users would want to use
> PARROT_DYNEXT.
oops, already merged.
I'll add some docs instead.
>> !!! rurban/fix-gc-thr-gh880+gh875
>> GC should stop walking into another thread interp.
>> Someone should help me with this blocker. I also get work_list asserts,
>> and there's not even a threaded GC stress test yet.
>> Easy to repro: parrot -t7 and some threaded code.
>
> Can you submit an issue with the simplest threaded code that exhibits this
> bug when run with -t7 ? Also, if you have time, if you can create an issue
> with a specification for what a threaded GS stress test should do, we might
> be able to get you some help with that.
I added stress tests to the branch rurban/fix-gc-thr-gh880+gh875
where I try various attempts.
> I agree that this is an important issue that I would really like to see
> solved before 5.0.0 if possible. If you can braindump as much as you can
> into a github issue, that would be helpful.
See the two issues involved 880 and 875, but it really just one error.
I thought this little snippet fixed it, but apparently not:
Also block the sweep phase from proxied interps. Previously only the mark.
diff --git a/src/pmc/parrotinterpreter.pmc b/src/pmc/parrotinterpreter.pmc
index 3d1ffa7..06c8e5e 100644
--- a/src/pmc/parrotinterpreter.pmc
+++ b/src/pmc/parrotinterpreter.pmc
@@ -840,11 +840,13 @@ Schedules the given task on the proxy's interpreter.
/* don't run GC from the wrong thread since GC involves stack
walking and we
* don't want the foreign GC to find our objects */
Parrot_block_GC_mark_locked(proxied_interp);
+ Parrot_block_GC_sweep(proxied_interp);
Parrot_cx_schedule_immediate(proxied_interp,
Parrot_thread_create_local_task(INTERP, proxied_interp, task));
Parrot_unblock_GC_mark_locked(proxied_interp);
+ Parrot_unblock_GC_sweep(proxied_interp);
#else
Parrot_cx_schedule_immediate(interp, task);
#endif
--
Reini Urban
http://cpanel.net/ http://www.perl-compiler.org/
More information about the parrot-dev
mailing list