Running the following on ruby 1.5.3 (2000-04-11) [i686-linux]
callcc {|cont|
for i in 0..4
print "\n#{i}: "
for j in i*5...(i+1)*5
cont.call() if j == 17
printf "%3d", j
end
end
}
print "\n"
I get
0: 0 1 2 3 4
1: 5 6 7 8 9
2: 10 11 12 13 14
3: 15 16
t.rb:10: [BUG] Segmentation fault
zsh: abort ruby -w t.rb
The backtrace is
#0 0x4008bab1 in __kill () from /lib/libc.so.6
(gdb) bt
#0 0x4008bab1 in __kill () from /lib/libc.so.6
#1 0x4008b6bf in raise (sig=6) at ../sysdeps/posix/raise.c:27
#2 0x4008cef3 in abort () at ../sysdeps/generic/abort.c:88
#3 0x80afa0d in rb_bug (fmt=0x80c3aca "Segmentation fault") at error.c:162
#4 0x80978ed in sigsegv (sig=11) at signal.c:372
#5 0x4008b9b8 in __restore ()
at ../sysdeps/unix/sysv/linux/i386/sigaction.c:125
#6 0x806595b in rb_gc_call_finalizer_at_exit () at gc.c:1198
#7 0x8051cba in ruby_run () at eval.c:1113
#8 0x80504ac in main (argc=3, argv=0xbffff5d4, envp=0xbffff5e4) at main.c:39
Let me know if you need any stack info.
Dave