I've been using clintp's pasm test script for much of my testing, which is supposed to be an infix expression evaluator. I've been stress-testing parrot and finding bugs by putting increasingly-large expressions into the pasm file for it to evaluate.
Attached is a .pasm file which causes some string data to be written into the middle of the string_pool->pool_buffer list of entries, such that when it tries to dereference foo in new_pmc_header, it's pointing to garbage memory. 0x20202020 for me, which is four spaces. Changing the save/restore of spaces in the pasm file to use periods causes the pointer to be 0x2e2e2e2e. I tried for a bit on this, but couldn't really track it down any more than that. Hopefully someone else can figure it out. To change the expression to make it more stressful (on both your debugging sessions, and parrot), add to the 'save ' at the very bottom of the script. Currently, it's along the lines of: "2" . ( "+(45*2+6)-3*5/(2+9/7-(5*6+3-5*7/2-2)*31+52/67*10-32-56)" x $somelargenumberofpastes ) Mike Lambert PS: Clint, I hope you don't mind me giving out the pasm file. I believe it is in the best interest of your master plan. :)
gc_string_stress.pasm
Description: gc_string_stress.pasm