Re: [Gc] win32 special treatment in GC_add_roots and GC_remove_roots codepaths

Ivan Maidanski ivmai at
Tue Sep 13 07:17:05 PDT 2011

Hi Lucas,

In short words: it is possible to implement but no one spent his time on it yet.
If you feel you could do it - great - send me a patch (against "master" branch).


13 09 2011, 00:20 Lucas Meijer <lucas at>:
> Hi,
> in GC_add_roots_inner there are is a win32 codepath and a nonwin32 codepath
> for detecting if there is an overlap/adjacent rootset already present. if so it
> extends the existing rootset to fully include the newly added rootset.
> GC-remove_roots is not implemented on win32.
> I'm hoping someone can explain why the nonwin32 codepath is required. On a quick
> experiment, making win32 use the nonwin32 codepath, things "seem" to work fine,
> and allow me to unregister roots.
> A message on this mailinglist, Ivan writes:
> "In theory, it's possible to implement GC_remove_roots() for Win32.
> But, it is complicated due to overlapping/adjacent regions processing."
> This statement puzzles me, as the non Win32 codepath also does
> overlapped-roots-collapsing, so it would seem to be it would suffer from the
> same problem of unregistering being unsuccessful in the case where the rootset
> has been expanded.
> What is so special about win32?
> Thanks,
>   Lucas
> _______________________________________________
> Gc mailing list
> Gc at

More information about the Gc mailing list