We recently switched from boost 1.39 to boost 1.44.  We use the bjam and boost build packaged with the version of boost we use.

It seems that the bjam packaged with 1.44 exists with 0 even if there is a failure:

...failed gcc.compile.c++ /home/foo/Foo.o... ...failed updating 1 target...
machine:/home/foo # echo $?
0

It stops early with the -q and prints out that it failed, it just exits 0.

bjam -v Boost.Jam Version 3.1.18. OS=LINUX. Copyright 1993-2002 Christopher Seiwald and Perforce Software, Inc. Copyright 2001 David Turner. Copyright 2001-2004 David Abrahams. Copyright 2002-2008 Rene Rivera. Copyright 2003-2008 Vladimir Prus.

With Version 3.1.17. OS=LINUX version that came with 1.39, I get an exit status of 1, which is what I expect.