Leopold Toetsch <[EMAIL PROTECTED]> wrote:
> Steve Fink <[EMAIL PROTECTED]> wrote:

>> It crashes on a memcpy inside compact_pool

> Some remarks what I could find out:

> - current COW copying of stacks is AFAIK borken - both "copies" of
>   one COWed stack share the same Buffer header

I have now more signs for that:

- First: I have a smaller program, that shows a simimlar corruption bug (a
  Random PMC turns suddenly into a RetContinuation PMC - while its
  called Random it shouldn't expose randomness on itself :)
- Turning GC off stops that bug - as well as in your program
- Using the LEA/system allocator (Configure.pl --gc=libc) makes the bug
  vanish

>   the GC/compact_pool in resources.c does correctly deal with such
>   Buffers. COWed strings have distinct (String)Buffer headers.

I'm quite sure now, that the bug is caused by the new COWed register
chunks, which share *one* Buffer header.

leo

Reply via email to