|
Boost Users : |
Subject: [Boost-users] Boost test, segmentation fault.
From: Matthijs Mohlmann (matthijs_at_[hidden])
Date: 2010-08-26 10:10:44
Hello all,
First of all:
I'm building an application and with that I use Boost test for unit testing. This helped
me already to fix some obscure bugs. (I am very happy with boost test)
I have the Master suite test setup in one file and the normal test suites each in one
file. This worked very well. Now I have the following test suite which gives me a
segmentation fault and I have no idea why:
BOOST_AUTO_TEST_SUITE(ProgramOptions)
BOOST_AUTO_TEST_CASE(ProgramOptions_Valid_Options) {
// Output
boost::test_tools::output_test_stream output("misc/ProgramOptions_01.output", true);
// Save output buffer
std::streambuf *strmbuffer;
strmbuffer = std::cout.rdbuf();
// Redirect the output.
std::cout.rdbuf(output.rdbuf());
// Redirect output stream so we can do some checks.
printSomething();
BOOST_REQUIRE(output.match_pattern());
// Now lets process some arguments.
printSomething();
BOOST_REQUIRE(output.match_pattern());
// Restore output buffer
std::cout.rdbuf(strmbuffer);
}
BOOST_AUTO_TEST_SUITE_END()
The function that gets tested:
void printSomething() {
std::cout << "Test output" << std::endl;
}
If I put the same content 'Test output' in the ProgramOptions_01.output file then everything
is fine and executes ok. When putting different content in that file it goes wrong.
I have also a gdb backtrace if that is interesting:
(gdb) r
Starting program: /home/matthijs/Projects/cppcms/trunk/cmsapp_test
[Thread debugging using libthread_db enabled]
Running 10 test cases...
Program received signal SIGSEGV, Segmentation fault.
0xb7f6f9e8 in vtable for boost::unit_test::progress_monitor_t ()
from /usr/lib/libboost_unit_test_framework.so.1.42.0
(gdb) bt full
#0 0xb7f6f9e8 in vtable for boost::unit_test::progress_monitor_t ()
from /usr/lib/libboost_unit_test_framework.so.1.42.0
No symbol table info available.
#1 0xb7e5b77f in std::ostream::flush() () from /usr/lib/libstdc++.so.6
No symbol table info available.
#2 0xb7f0a13d in boost::unit_test::output::compiler_log_formatter::log_finish(std::ostream&) () from /usr/lib/libboost_unit_test_framework.so.1.42.0
No symbol table info available.
#3 0xb7f2e492 in boost::unit_test::unit_test_log_t::test_finish() ()
from /usr/lib/libboost_unit_test_framework.so.1.42.0
No symbol table info available.
#4 0xb7f1a593 in boost::unit_test::framework::run(unsigned long, bool) ()
from /usr/lib/libboost_unit_test_framework.so.1.42.0
No symbol table info available.
#5 0xb7f2f469 in boost::unit_test::unit_test_main(bool (*)(), int, char**) ()
from /usr/lib/libboost_unit_test_framework.so.1.42.0
No symbol table info available.
#6 0x08062133 in main (argc=1, argv=0xbffff824)
at /usr/include/boost/test/unit_test.hpp:59
No locals.
Hopefully someone with some insight in boost.test can help me
out here...
Regards,
Matthijs Möhlmann
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net