Unfortunately the target architecture is plain old x86, but... I think that finally I have traced this issue!

It looks like alignment is not done for a threaded code (which is actually exactly what happen in my
robotic code - the assertion fails in a thread created with boost::thread). Please take a look at a simpletest code attached. It works perfect on Linux (x86, g++/icpc) and Solaris (sparc, g++), but the assertionfor a BAD variable fails on QNX (x86, QCC/g++).

The problem seems, that gcc alignment works according to initial thread's stack alignment.
On QNX this alignment is done for a main thread (and main() routine), but not for a threads createdwith pthread_create(). I believe this is a fault of QNX's C library, not the compiler.

I will try to dig into this issue and hope to find a solution (QNX code is opensourced) and hopefully
send at least a problem report (or hopefully a patch) to QNX.