B
Bil Kleb
Thanks to Charlie Mills, who actually bothered to read the comment
in gc.c,
#if defined(__ia64__) && (!defined(__GNUC__) || __GNUC__ < 2 || defined(__OPTIMIZE__))
/* ruby crashes on IA64 if compiled with optimizer on */
/* when if STACK_LEVEL_MAX is greater than this magic number */
/* I know this is a kludge. I suspect optimizer bug */
we got yesterday's ruby-stable-snapshot built on NASA's SGI Altix cluster,
http://www1.nasa.gov/home/hqnews/2004/jul/HQ_04243_supercomput.html
by compiling with -O0.
We briefly tried turning off the optimization only for gc.c, but
gave up quickly.
Anyway, instead of only 44 levels with the crippled stack, we
managed to get to 105k stack levels before it seg-faulted and
dumped a >2GB core(!) with our little test code,
def helloLevel level
puts "hello world! "+level.to_s
helloLevel(level+1)
end
helloLevel 0
Much rejoicing,
in gc.c,
#if defined(__ia64__) && (!defined(__GNUC__) || __GNUC__ < 2 || defined(__OPTIMIZE__))
/* ruby crashes on IA64 if compiled with optimizer on */
/* when if STACK_LEVEL_MAX is greater than this magic number */
/* I know this is a kludge. I suspect optimizer bug */
we got yesterday's ruby-stable-snapshot built on NASA's SGI Altix cluster,
http://www1.nasa.gov/home/hqnews/2004/jul/HQ_04243_supercomput.html
by compiling with -O0.
We briefly tried turning off the optimization only for gc.c, but
gave up quickly.
Anyway, instead of only 44 levels with the crippled stack, we
managed to get to 105k stack levels before it seg-faulted and
dumped a >2GB core(!) with our little test code,
def helloLevel level
puts "hello world! "+level.to_s
helloLevel(level+1)
end
helloLevel 0
Much rejoicing,