Bernhard Schmalhofer via RT wrote:
it looks like recent PGE changes broke 'Parrot m4'.
I have boiled it down to a 20 line test cast and added it
as test 4 in t/library/pge.t. This test case fails, at least under my
Linux installation, with a segmentation fault.
It looks like a GC bug, kind of an ABA problem due to chunk reusage.
OTOH I tried to clear chunk->u.date, but this did *not* help.
The remarkable thing here is: both stacks seen in the trace are Control
stacks (used by bsr, ret, and exceptions). And that the visible PMC
address here:
==4409== at 0x80CB662: pobject_lives (src/dod.c:223)
==4409== by 0x808D5FB: mark_stack (src/stacks.c:72)
.... is the same as the bsr address seen in chunk->prev.
And above chunk has the same botton, as the TOS of the stack_p
==4409== by 0x808DCE8: stack_prepare_push (src/stack_common.c:117)
==4409== by 0x808D960: stack_push (src/stacks.c:253)
... used here in the C<bsr_ic> opcode (visible in gdb backtrace).
Anyway, I've put in a workaround by clearing the entry_type of popped
stack entries (r9678). But further investigation is welcome.
leo