Gonzalo,

Thanks for confirming that the pointers I'm seeing
indeed indicate
something is trashing memory.  Now, how "my code" could
be doing this is another story ;-)

The wrapping of termios is here:

http://raa.ruby-lang.org/project/ruby-termios

Yes, I'll give valgrind another try,
although I didn't have much luck with it when
I tried a couple months ago.  At least
I now have an idea what's getting trashed.
But, let's face it:  the C-Ruby interpreter
plays fast and loose with memory regions.

So, I'm first going to try using set_trace_func
to get a history of all activity up to
the gdb breakpoint on the GC of the invalid stack
frame after I've set GC.limit=0 to force
a GC on every object allocation.

I'd love to post a .zip, .tar or whatever.
However, you'd need a our custom robotic
hardware to run it!  I've been unable
to duplicate the failure in simulation
thus far.  That's why it's a "nasty" bug.

If anyone would like, I can post some core files
on our FTP server.

- brent