The first thing that looks fishy is that the line numbers in your stack
trace don't correspond to the right function in gc.c for ruby version
1.6.8.  For example:

#7  0x00028570 in mark_entry (key=1, value=718165568) at gc.c:461

Line 461 of gc.c reads:

458 static int
459 mark_hashentry(key, value)
460     VALUE key;
461     VALUE value;
462 {

So the line numbers seem to be off by 15 lines or so.  Are you running a
stock 1.6.8 or have you made changes?

Also, if you're going to be running 1.6, there two years worth of fixes
in the latest 1.6 branch that aren't present in 1.6.8 (there was never a
1.6.9 released).  In particular, there are some GC changes.  I don't
know if these changes would fix your problem or not.

I'm also suspect of building ruby with -Os.  Try building with -O0 and
see if that helps.

Paul