From: "Matt Diephouse via RT" <[EMAIL PROTECTED]> Date: Sun, 16 Jul 2006 14:37:39 -0700
mdiep wrote: > Trying to use an Iterator with a NameSpace makes Parrot segfault: > > mini:~/Projects/parrot mdiep$ cat test.pir > .sub main :main > .local pmc iter, ns > ns = get_namespace > > iter = new .Iterator, ns > loop: > unless iter goto loop_end > $P0 = shift iter > > $S0 = $P0 > print $S0 > print "\n" > goto loop > > loop_end: > end > .end > > mini:~/Projects/parrot mdiep$ parrot test.pir > Segmentation fault > mini:~/Projects/parrot mdiep$ FYI, changing C< $P0 = shift iter > to C< $S0 = shift iter > makes this example work corrrectly (of course, you also have to remove C< $S0 = $P0 >). -- Matt Diephouse It doesn't segfault for me (GNU/Linux, SuSE 9.0), but does DoS my system pretty effectively. This seems to be because Iterator.shift_pmc eventually calls key_string => VTABLE_get_string => Key.get_string => get_string, ad nauseam. But the right thing is not obvious to me. BTW, it doesn't seem right that I can run Parrot for only a second or two and get more than 300K stack frames deep. Isn't there a way to limit the stack to something sane, since more than a few MB of C stack usage is a pretty sure sign of a Parrot bug? -- Bob Rogers http://rgrjr.dyndns.org/ ------------------------------------------------------------------------ (gdb) thread 1 [Switching to thread 1 (Thread 16384 (LWP 1138))]#0 0x401e97a7 in Parrot_Key_get_string (interpreter=0x8050fa0, pmc=0x81ba214) at key.pmc:148 (gdb) bt #0 0x401e97a7 in Parrot_Key_get_string (interpreter=0x8050fa0, pmc=0x81ba214) at key.pmc:148 #1 0x4016b067 in key_string (interpreter=0x8050fa0, key=0x81ba214) at src/key.c:367 #2 0x401e97c1 in Parrot_Key_get_string (interpreter=0x8050fa0, pmc=0x81ba214) at key.pmc:149 #3 0x4016b067 in key_string (interpreter=0x8050fa0, key=0x81ba214) at src/key.c:367 #4 0x401e97c1 in Parrot_Key_get_string (interpreter=0x8050fa0, pmc=0x81ba214) at key.pmc:149 #5 0x4016b067 in key_string (interpreter=0x8050fa0, key=0x81ba214) at src/key.c:367 #6 0x401e97c1 in Parrot_Key_get_string (interpreter=0x8050fa0, pmc=0x81ba214) at key.pmc:149 #7 0x4016b067 in key_string (interpreter=0x8050fa0, key=0x81ba214) at src/key.c:367 #8 0x401e97c1 in Parrot_Key_get_string (interpreter=0x8050fa0, pmc=0x81ba214) at key.pmc:149 #9 0x4016b067 in key_string (interpreter=0x8050fa0, key=0x81ba214) at src/key.c:367 #10 0x401e97c1 in Parrot_Key_get_string (interpreter=0x8050fa0, pmc=0x81ba214) at key.pmc:149 #11 0x4016b067 in key_string (interpreter=0x8050fa0, key=0x81ba214) at src/key.c:367 #12 0x401e97c1 in Parrot_Key_get_string (interpreter=0x8050fa0, pmc=0x81ba214) at key.pmc:149 #13 0x4016b067 in key_string (interpreter=0x8050fa0, key=0x81ba214) at src/key.c:367 #14 0x401e97c1 in Parrot_Key_get_string (interpreter=0x8050fa0, pmc=0x81ba214) at key.pmc:149 #15 0x4016b067 in key_string (interpreter=0x8050fa0, key=0x81ba214) at src/key.c:367 #16 0x401e97c1 in Parrot_Key_get_string (interpreter=0x8050fa0, pmc=0x81ba214) at key.pmc:149 #17 0x4016b067 in key_string (interpreter=0x8050fa0, key=0x81ba214) at src/key.c:367 #18 0x401e97c1 in Parrot_Key_get_string (interpreter=0x8050fa0, pmc=0x81ba214) at key.pmc:149 #19 0x4016b067 in key_string (interpreter=0x8050fa0, key=0x81ba214) at src/key.c:367 #20 0x401e97c1 in Parrot_Key_get_string (interpreter=0x8050fa0, pmc=0x81ba214) at key.pmc:149 #21 0x4016b067 in key_string (interpreter=0x8050fa0, key=0x81ba214) at src/key.c:367 #22 0x401e97c1 in Parrot_Key_get_string (interpreter=0x8050fa0, pmc=0x81ba214) at key.pmc:149 #23 0x4016b067 in key_string (interpreter=0x8050fa0, key=0x81ba214) at src/key.c:367 #24 0x401e97c1 in Parrot_Key_get_string (interpreter=0x8050fa0, pmc=0x81ba214) at key.pmc:149 #25 0x4016b067 in key_string (interpreter=0x8050fa0, key=0x81ba214) at src/key.c:367 #26 0x401e97c1 in Parrot_Key_get_string (interpreter=0x8050fa0, pmc=0x81ba214) at key.pmc:149 #27 0x4016b067 in key_string (interpreter=0x8050fa0, key=0x81ba214) at src/key.c:367 #28 0x401e97c1 in Parrot_Key_get_string (interpreter=0x8050fa0, pmc=0x81ba214) at key.pmc:149 #29 0x4016b067 in key_string (interpreter=0x8050fa0, key=0x81ba214) at src/key.c:367 #30 0x401e97c1 in Parrot_Key_get_string (interpreter=0x8050fa0, pmc=0x81ba214) at key.pmc:149 #31 0x4016b067 in key_string (interpreter=0x8050fa0, key=0x81ba214) at src/key.c:367 #32 0x401e97c1 in Parrot_Key_get_string (interpreter=0x8050fa0, pmc=0x81ba214) at key.pmc:149 #33 0x4016b067 in key_string (interpreter=0x8050fa0, key=0x81ba214) at src/key.c:367 #34 0x401e97c1 in Parrot_Key_get_string (interpreter=0x8050fa0, pmc=0x81ba214) at key.pmc:149 #35 0x4016b067 in key_string (interpreter=0x8050fa0, key=0x81ba214) at src/key.c:367 #36 0x401e97c1 in Parrot_Key_get_string (interpreter=0x8050fa0, pmc=0x81ba214) at key.pmc:149 #37 0x4016b067 in key_string (interpreter=0x8050fa0, key=0x81ba214) at src/key.c:367 #38 0x401e97c1 in Parrot_Key_get_string (interpreter=0x8050fa0, pmc=0x81ba214) at key.pmc:149 #39 0x4016b067 in key_string (interpreter=0x8050fa0, key=0x81ba214) at src/key.c:367 #40 0x401e97c1 in Parrot_Key_get_string (interpreter=0x8050fa0, pmc=0x81ba214) at key.pmc:149 #41 0x4016b067 in key_string (interpreter=0x8050fa0, key=0x81ba214) at src/key.c:367 #42 0x401e97c1 in Parrot_Key_get_string (interpreter=0x8050fa0, pmc=0x81ba214) at key.pmc:149 #43 0x4016b067 in key_string (interpreter=0x8050fa0, key=0x81ba214) at src/key.c: