Well, I managed to provoke Ruby into SEGVing with this same code:

Is this something to do with the latest lazy dup in string.c?



(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  0x80af3bd in rb_bug (fmt=0x80c33ca "Segmentation fault") at error.c:162
#4  0x80973cd in sigsegv (sig=11) at signal.c:372
#5  0x4008b9b8 in __restore () at ../sysdeps/unix/sysv/linux/i386/sigaction.c:125
#6  0x809a4ad in rb_str_dup (str=1075316652) at string.c:182
#7  0x809c406 in str_gsub (argc=2, argv=0xbfff9b64, str=1075316652, bang=0) at string.c:1155
#8  0x809c6f6 in rb_str_gsub (argc=2, argv=0xbfff9b64, str=1075316652) at string.c:1249
#9  0x8058ad5 in call_cfunc (func=0x809c6e0 <rb_str_gsub>, recv=1075316652, len=-1, argc=2,
    argv=0xbfff9b64) at eval.c:3876
#10 0x805908f in rb_call0 (klass=1075408352, recv=1075316652, id=4161, argc=2, argv=0xbfff9b64,

..