This code:
set I0, 0
TOP: bsr FOO
inc I0
lt I0, 974, TOP
print "Done\n"
end
FOO: new P0, PerlString
set P0, "foo"
pushp
ret
end
causes a segfault, while the same program with 974 changed to 973 (or
smaller) runs fine.
Running parrot under gdb shows that it's dying somewhere in mark_used
- I've attached the stack trace at the bottom of this message.
Simon
----------
Program received signal SIGSEGV, Segmentation fault.
0x08091f72 in mark_used ()
#0 0x08091f72 in mark_used ()
#1 0x080920c0 in trace_active_PMCs ()
#2 0x08092559 in Parrot_do_dod_run ()
#3 0x080925a5 in alloc_more_string_headers ()
#4 0x08092715 in new_string_header ()
#5 0x0808df93 in Parrot_string_make ()
#6 0x08099ae7 in Parrot_PerlString_init ()
#7 0x0808fae9 in pmc_new ()
#8 0x0805871b in Parrot_new_p_ic ()
#9 0x0808f443 in runops_fast_core ()
#10 0x0804928e in runops_generic ()
#11 0x08049b45 in runops ()
#12 0x080938e6 in Parrot_runcode ()
#13 0x080a01d2 in main ()
#14 0x40087627 in __libc_start_main (main=0x80a0140 <main>, argc=2,
ubp_av=0xbfffe914, init=0x8048c48 <_init>, fini=0x80a0460 <_fini>,
rtld_fini=0x4000dcc4 <_dl_fini>, stack_end=0xbfffe90c)
at ../sysdeps/generic/libc-start.c:129