id,summary,reporter,owner,description,type,status,priority,milestone,component,version,severity,resolution,keywords,cc,lang,patch,platform
1015,clone_p_p segfaults with self-referential Hash pmc.,Austin_Hastings,whiteknight,"If a complex data structure, built with Hash and Array structures, is self-referencing, running clone_p_p on it will quickly segfault.

{{{
our %Global_hash;

sub bsu() {
	say(""BSU: starting."");
	%Global_hash<key><key2> := 1;
	%Global_hash<key><loop> := %Global_hash;
	
	my %local := %Global_hash;
	
	my $result := Q:PIR {{
		$P0 = find_lex '%local'
		%r = clone $P0
	}};
	
	say(""BSU: returning."");
	return $result;
	
}

bsu();
}}}

The solution here is likely to be involved -- perhaps disabling the GC and using the mark bit to track what has been cloned. But segmentation fault is not a parrot exception, which is what a memory problem should become.

Dukeleto confirms this problem exists on Darwin, and his Linux box.

FYI: I discovered this because PCT clones the symbol table of PAST::Block nodes.",bug,new,normal,,core,1.6.0,medium,,"segfault, clone, memory",,,,
