On 9/4/06, khaines / enigo.com <khaines / enigo.com> wrote:
>
> array.c's behavior is what needs to be examined in greater detail, here.
> Mutex, itself, is not doing anything surprising.
>
>
> Kirk Haines
>

Good findings.

I think the problem lies in the Array#shift (rb_ary_shift)
implementation. Basically, it just increments the internal pointer and
it never modifies the size of an array. This means that if you have an
array with 1000 elements and you 'shift' it 999 times, all these
elements are still visible to the garbage collector, until you modify
this array by triggering rb_ary_store method, for example.

-- 
Kent
---
http://www.datanoise.com