(go ahead and apply that patch, I'll get things fixed as soon as I can.)
If I run a very short tcl program, ala:
set a(b) whee puts -
I get a crash in parrot, ala:
Exception: EXC_BAD_ACCESS (0x0001) Codes: KERN_PROTECTION_FAILURE (0x0002) at 0x00000007
Thread 0 Crashed: #0 0x0002d310 in pobject_lives (dod.c:179) #1 0x001067ec in mark_pmc_register_stack (register.c:126) #2 0x0010f294 in mark_context (sub.c:103) #3 0x001a8c6c in Parrot_Continuation_mark (continuation.c:54) #4 0x0002e38c in mark_special (dod.c:115) #5 0x0002d358 in pobject_lives (dod.c:211) #6 0x0002de74 in trace_mem_block (dod.c:889) #7 0x001946f4 in trace_system_stack (cpu_dep.c:119) #8 0x001946ac in trace_system_areas (cpu_dep.c:99) #9 0x0002d578 in trace_active_PMCs (dod.c:300) #10 0x0002e04c in Parrot_do_dod_run (dod.c:1028) #11 0x0010aef0 in more_traceable_objects (smallobject.c:111) #12 0x0010b028 in get_free_object (smallobject.c:177) #13 0x0000ef0c in get_free_pmc (headers.c:53) #14 0x00029ca0 in get_new_pmc_header (pmc.c:104) #15 0x00029fd0 in pmc_new_noinit (pmc.c:208) #16 0x0003af64 in Parrot_newsub_p_ic_ic (core_ops.c:508) #17 0x00111ddc in runops_slow_core (runops_cores.c:146) #18 0x0000aa10 in runops_int (interpreter.c:838) #19 0x0000aad8 in runops_ex (interpreter.c:865) #20 0x0000ad04 in runops (interpreter.c:941) #21 0x0000ea20 in Parrot_runcode (embed.c:693) #22 0x0000378c in main (main.c:559) #23 0x00001d60 in _start (crt.c:267) #24 0x00001be0 in start
Thread 1: #0 0x9003e9a8 in semaphore_wait_signal_trap #1 0x9003e7c4 in _pthread_cond_wait #2 0x0019a988 in queue_wait (tsq.c:319) #3 0x00108c24 in event_thread (events.c:905) #4 0x90020c28 in _pthread_body
Thread 2: #0 0x9002568c in select #1 0x001085a0 in io_thread (events.c:647) #2 0x90020c28 in _pthread_body
The crash is fragile - doesn't happen if you change the puts to "puts {}", or delete the second line entirely.
I'll try to find a smaller test case.
--
Will "Coke" Coleda will at coleda dot com