id	summary	reporter	owner	description	type	status	priority	milestone	component	version	severity	resolution	keywords	cc	lang	patch	platform
1723	[bug] linked lists result in segfaults	pmichaud		"Creating a linked list of moderate size ultimately leads to a segfault during GC.

The following program simply creates a linked list of nodes.  On my system, I get a segfault after about 96K nodes:
{{{
pmichaud@plum:~/parrot/trunk$ cat list2.pir
.sub 'main' :main
    .local pmc iterclass, intclass

    iterclass = newclass ['RangeIter']
    addattribute iterclass, '$!value'
    addattribute iterclass, '$!nextIter'
    intclass = subclass ['Integer'], 'Int'

    .local pmc head, next
    head = new iterclass
    $P0 = new intclass
    setattribute head, '$!value', $P0
   
    next = head 
  loop:
    ($I0, next) = next.'reify'()
    $I1 = $I0 % 5000
    if $I1 goto loop
    say $I0
    goto loop
.end


.namespace ['RangeIter']

.sub 'reify' :method
    .local pmc value, nextiter
    value = getattribute self, '$!value'
    nextiter = new ['RangeIter']
    setattribute self, '$!nextIter', nextiter
    $P0 = add value, 1.0
    setattribute nextiter, '$!value', $P0
    .return ($P0, nextiter)
.end
pmichaud@plum:~/parrot/trunk$ ./parrot list2.pir
5000
10000
15000
20000
25000
30000
35000
40000
45000
50000
55000
60000
65000
70000
75000
80000
85000
90000
95000
Segmentation fault
pmichaud@plum:~/parrot/trunk$ 
}}}

gdb shows that the segfault occurs in gc mark:

{{{
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7a5d7e5 in Parrot_gc_mark_PMC_alive_fun (interp=0x60a080, 
    obj=0x3418e80) at src/gc/api.c:166
}}}


Some Rakudo users have reported segfaults on lists with less than 10,000 nodes.

Pm"	bug	closed	normal		GC	2.6.0	medium	fixed					
