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:

Reply via email to