Boost.Test SIGCHLD catching causes tests to fail

I'm trying to update my project to use boost 1.35. There is behavior in the test library to catch SIGCHLD and consider it an error. Is there a reason for this? I have cases where my tests really do need to execute something (to test some execution code). For our purposes, the default behavior of SIGCHLD is correct, and reporting it as an error is wrong. The other signals (SIGILL, SIGFPE, SIGSEGV, SIGBUS, etc.) are all good to catch, as they usually indicate a real error. Is there some way to configure this separately from the rest of the errors properly detected and reported by BOOST_TEST_CATCH_SYSTEM_ERRORS=yes? Here's some output: Platform: linux Compiler: GNU C++ version 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2) STL : GNU libstdc++ version 20070929 Boost : 1.35.0 unknown location(0): fatal error in "test_real_execute": child has exited; pid: 1000; uid: 22286; exit value: 0 test_execute.cpp(106): last checkpoint Note that in that output the PID and UID are backwards. I couldn't find any way to configure this separately, so for my own use I'm just going to put a few #ifdefs around the SIGCHLD code (like the SIGPOLL handling) in boost/test/impl/execution_monitor.ipp unless someone has a better idea. Thanks. -Kevin-

On Mon, May 12, 2008 at 07:49:19PM -0600, Kevin Harris wrote:
I'm trying to update my project to use boost 1.35. There is behavior in the test library to catch SIGCHLD and consider it an error. Is there a reason for this?
This is an error which is already fixed in trunk. I suggest you try it out so that further related bugs can be fixed in time. Jens

Kevin Harris wrote:
I'm trying to update my project to use boost 1.35. There is behavior in the test library to catch SIGCHLD and consider it an error. Is there a reason for this?
Jens Seidel replied:
This is an error which is already fixed in trunk. I suggest you try it out so that further related bugs can be fixed in time.
There appears to be a related compile error, currently in the trunk: ../boost/test/impl/execution_monitor.ipp: In member function 'void boost::detail::system_signal_exception::report() const': ../boost/test/impl/execution_monitor.ipp:443: error: 'SIGPOLL' was not declared in this scope ../boost/test/impl/execution_monitor.ipp:470: error: duplicate case value ../boost/test/impl/execution_monitor.ipp:460: error: previously used here ../boost/test/impl/execution_monitor.ipp: In constructor 'boost::detail::signal_handler::signal_handler(bool, int, bool, char*)': ../boost/test/impl/execution_monitor.ipp:627: error: 'SIGPOLL' was not declared in this scope http://www.boost.org/development/tests/trunk/output/Oliver%20Baltzer-boost-b... Does anyone know how to fix it? (I'm clueless, but it looks like a missing #include.) -- Niels Dekker http://www.xs4all.nl/~nd/dekkerware Scientific programmer at LKEB, Leiden University Medical Center
participants (3)
-
Jens Seidel
-
Kevin Harris
-
Niels Dekker - mail address until 2008-12-31