From: ts Date: 2004-08-29T00:36:02+09:00 Subject: Re: [PATCH] Subtle bug in bignum.c >>>>> "t" == ts writes: t> 1663 z = bignew(l2, RBIGNUM(x)->sign || RBIGNUM(y)->sign); t> (gdb) info register ebx t> ebx 0x8117700 135362304 t> (gdb) t> it will call bignew() which will call rb_gc(), but in ebx it has t> RBIGNUM(x)->digits. This mean that when ruby will mark the registers it ^^^^^^^^^^^^^^^^^^ t> will not mark the Bignum created by rb_big_clone() and the GC remove the t> Bignum created. In reality this is RBIGNUM(y)->digits which is is in ebx (the result is the same) (gdb) p *(struct RBignum *)y $13 = {basic = {flags = 13, klass = 1074419244}, sign = 1 '\001', len = 1, digits = 0x8117700} (gdb) Guy Decoux