Boost logo

Boost :

From: Ralf W. Grosse-Kunstleve (rwgk_at_[hidden])
Date: 2004-08-11 13:01:58


--- Markus_Schöpflin <markus.schoepflin_at_[hidden]> wrote:
> C++ V6.5-041 for Compaq Tru64 UNIX V5.1B (Rev. 2650), which is the
> latest compiler available, as far as I can tell. The compiler was
> installed on OSF1/V5.1/alpha.

The tests were run with this compiler:

Compaq C++ V6.5-031 for Compaq Tru64 UNIX V5.1 (Rev. 732)

> cxx: Fatal: A memory access violation (bus error or segmentation fault)
> has occurred. Please submit a problem report.
> ...
> There must be some difference between my test platform and the one used
> to run the regression tests but I have no idea where to start looking.

With the latest cvs I am getting the exact same results as Markus even though
my compiler is a slightly older version. Gennadiy's fixes appear to have done
something good.

The internal compiler error is triggered by this construct in
unit_test_suite.cpp:

            BOOST_UT_LOG_BEGIN( BOOST_TEST_STRING_LITERAL( __FILE__ ),
__LINE__,
 log_fatal_errors )
                "Test case initialization has failed"
            BOOST_UT_LOG_END;

Using the preprocessed file, this doesn't compile:

            boost::unit_test::unit_test_log::instance()
            << boost::unit_test::begin()
            << boost::unit_test::level( log_fatal_errors )
            << boost::unit_test::file((boost::unit_test::literal_string(
"junk.c
pp", sizeof( "junk.cpp" ) - 1)))
            << boost::unit_test::line( 127 )
            << "Test case initialization has failed"
            << boost::unit_test::end();;

But this does:

            boost::unit_test::literal_string lit_str(
              "junk.cpp", sizeof( "junk.cpp" )-1);
            boost::unit_test::unit_test_log::instance()
            << boost::unit_test::begin()
            << boost::unit_test::level( log_fatal_errors )
            << boost::unit_test::file(lit_str)
            //<< boost::unit_test::file((boost::unit_test::literal_string(
"junk.c
pp", sizeof( "junk.cpp" ) - 1)))
            << boost::unit_test::line( 127 )
            << "Test case initialization has failed"
            << boost::unit_test::end();;

I.e. the ICE could be avoided by changing the BOOST_UT_LOG_BEGIN macro.
Gennadiy, email me if you are interested in getting access to our machine in
order to fix this problem.

Ralf

                
__________________________________
Do you Yahoo!?
Yahoo! Mail is new and improved - Check it out!
http://promotions.yahoo.com/new_mail


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk