Per the suggestion of ggarra and Sylvain, I've been running our robotic
lab control
application under valgrind on an x86 laptop rather than our ARM based
CPU board.

I've posted valgrind's stderr output and the suppression file on our FTP
site:

ftp://ftp.mbari.org/pub/brent

the suppression file is rubySuppressions.valgrind
the stderr output is valgrind.trace2

So far, I have not triggered a Segfault with the simulated hardware
currently
available to me.

The unhandled ioctl is expected.  We're locking
a serial port for exclusive access.

Many of the memcheck errors have been suppressed as they
are apparently artifacts of Ruby's conservative
garbarge collector.  However, those below *do* worry me.

Are they innocuous, or do they indicate a real problem?

....

==10837== Invalid write of size 1
==10837==    at 0x401DEAC: memcpy (in
/usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==10837==    by 0x8062E5E: rb_thread_restore_context (eval.c:7624)
==10837==    by 0x8062CA8: stack_extend (eval.c:7575)
==10837==    by 0x8062CF3: rb_thread_restore_context (eval.c:7592)
==10837==    by 0x8062CA8: stack_extend (eval.c:7575)
==10837==    by 0x8062CF3: rb_thread_restore_context (eval.c:7592)
==10837==    by 0x8062CA8: stack_extend (eval.c:7575)
==10837==    by 0x8062CF3: rb_thread_restore_context (eval.c:7592)
==10837==    by 0x8062CA8: stack_extend (eval.c:7575)
==10837==    by 0x8062CF3: rb_thread_restore_context (eval.c:7592)
==10837==    by 0x8062CA8: stack_extend (eval.c:7575)
==10837==    by 0x8062CF3: rb_thread_restore_context (eval.c:7592)
==10837==  Address 0xBEFE8908 is on thread 1's stack
==10837==

==10837== Invalid write of size 1
==10837==    at 0x401DEAC: memcpy (in
/usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==10837==    by 0x8062E5E: rb_thread_restore_context (eval.c:7624)
==10837==    by 0x8063D21: rb_thread_schedule (eval.c:7987)
==10837==    by 0x8063E9D: rb_thread_fd_writable (eval.c:8018)
==10837==    by 0x8070835: io_fflush (io.c:256)
==10837==    by 0x8070A70: rb_io_flush (io.c:339)
==10837==    by 0x805ACEE: call_cfunc (eval.c:4288)
==10837==    by 0x805B78F: rb_call0 (eval.c:4423)
==10837==    by 0x805C2CA: rb_call (eval.c:4654)
==10837==    by 0x8055F53: rb_eval (eval.c:2559)
==10837==    by 0x80594C9: rb_yield_0 (eval.c:3650)
==10837==    by 0x80554A1: rb_eval (eval.c:2391)
==10837==  Address 0xBEFE8908 is on thread 1's stack
==10837==

==10837== Invalid write of size 1
==10837==    at 0x401DEAC: memcpy (in
/usr/lib/valgrind/x86-linux/vgpreload_memcheck.so)
==10837==    by 0x8062E5E: rb_thread_restore_context (eval.c:7624)
==10837==    by 0x8063D21: rb_thread_schedule (eval.c:7987)
==10837==    by 0x806466B: rb_thread_stop (eval.c:8309)
==10837==    by 0x805ACEE: call_cfunc (eval.c:4288)
==10837==    by 0x805B78F: rb_call0 (eval.c:4423)
==10837==    by 0x805C2CA: rb_call (eval.c:4654)
==10837==    by 0x8055F53: rb_eval (eval.c:2559)
==10837==    by 0x805BDE8: rb_call0 (eval.c:4560)
==10837==    by 0x805C2CA: rb_call (eval.c:4654)
==10837==    by 0x8055F53: rb_eval (eval.c:2559)
==10837==    by 0x805BDE8: rb_call0 (eval.c:4560)
==10837==  Address 0xBEFE8908 is on thread 1's stack
=

-- 
 Brent Roman
 Software Engineer                 Tel: 831 775 1808
 425 Clinton St., Santa Cruz,      California, 95062
 mailto:brent / mbari.org  http://www.mbari.org/~brent