
Gennadiy Rozental <rogeeff@gmail.com> writes:
This makes no sense. Your test program does not refer to the itest facilities. There is single testing tool involved as well. Something seriously screwing up the stack.
Can you try to go step by step in the debugger?
I did. The stack gets corrupted when returning from cfc::operator/<double, 2, int> at tiny_vector.hh:182. The stack looks fine and then gets corrupted after one gdb "step". See attached gdb session transmission. I cannot imagine how this trivial function could corrupt the stack. How to debug this in more detail? I tried objdump -tD test_all >test_all.dis but I cannot find in test_all.dis the addresses mentioned in the traceback (e.g. 0x000000000047d43f)
Can you also try build UTF as external library?
What would that help? The error also appears when I link dynamically against the library provided in Debian (only the backtrace is less useful). Thanks, Christoph The gdb backtrace: ################################################################ (gdb) br tiny_vector.hh:185 Breakpoint 1 at 0x47d56e: file tiny_vector.hh, line 185. (gdb) run Starting program: /tmp/lg-bug/test_all Running 1 test case... Breakpoint 1, cfc::operator/<double, 2, int> (a=..., b=@0x7fffffffcd8c) at tiny_vector.hh:185 185 return a /= b; (gdb) n 186 } (gdb) p a $1 = {x = {0.5, 0.5}} (gdb) p b $2 = (const int &) @0x7fffffffcd8c: 2 (gdb) bt #0 cfc::operator/<double, 2, int> (a=..., b=@0x7fffffffcd8c) at tiny_vector.hh:186 #1 0x000000000047d43f in Glass (this=0x7fffffffcdc0, _size=..., _periodic=...) at glass.cc:5 #2 0x000000000041d50b in sq_dist::test_method (this=0x7fffffffce6f) at test_glass.cc:10 #3 0x000000000041d489 in sq_dist_invoker () at test_glass.cc:7 #4 0x0000000000474178 in boost::unit_test::ut_detail::invoker<boost::unit_test::ut_detail::unused>::invoke<void (*)()> (this=0x7fffffffcecf, f=@0x6d1a08) at /usr/include/boost/test/utils/callback.hpp:56 #5 0x000000000046fdf7 in boost::unit_test::ut_detail::callback0_impl_t<boost::unit_test::ut_detail::unused, void (*)()>::invoke (this=0x6d1a00) at /usr/include/boost/test/utils/callback.hpp:89 #6 0x0000000000439c85 in boost::unit_test::callback0<boost::unit_test::ut_detail::unused>::operator() (this=0x6d1ad0) at /usr/include/boost/test/utils/callback.hpp:118 #7 0x000000000042d161 in operator() (this=0x6d6378) at /usr/include/boost/test/impl/unit_test_monitor.ipp:41 #8 0x000000000042d144 in invoke<boost::unit_test::<unnamed>::zero_return_wrapper_t<boost::unit_test::callback0<boost::unit_test::ut_detail::unused> > > ( this=0x7fffffffcf5f, f=...) at /usr/include/boost/test/utils/callback.hpp:42 #9 0x000000000042d125 in invoke (this=0x6d6370) at /usr/include/boost/test/utils/callback.hpp:89 #10 0x0000000000441769 in boost::unit_test::callback0<int>::operator() (this=0x7fffffffdb80) at /usr/include/boost/test/utils/callback.hpp:118 #11 0x0000000000439d84 in boost::detail::do_invoke<boost::scoped_ptr<boost::detail::translate_exception_base>, boost::unit_test::callback0<int> > (tr=..., F=...) at /usr/include/boost/test/impl/execution_monitor.ipp:244 #12 0x000000000040d676 in boost::execution_monitor::catch_signals (this=0x6cfe80, F=...) at /usr/include/boost/test/impl/execution_monitor.ipp:956 #13 0x000000000040d73a in boost::execution_monitor::execute (this=0x6cfe80, F=...) at /usr/include/boost/test/impl/execution_monitor.ipp:1282 #14 0x000000000041740e in boost::unit_test::unit_test_monitor_t::execute_and_translate (this=0x6cfe80, tc=...) at /usr/include/boost/test/impl/unit_test_monitor.ipp:69 #15 0x000000000042f700 in boost::unit_test::framework_impl::visit (this=0x6cf4c0, tc=...) at /usr/include/boost/test/impl/framework.ipp:150 #16 0x000000000041baa7 in boost::unit_test::traverse_test_tree (tc=..., V=...) at /usr/include/boost/test/impl/unit_test_suite.ipp:193 #17 0x000000000041c01f in boost::unit_test::traverse_test_tree (id=65536, V=...) at /usr/include/boost/test/impl/unit_test_suite.ipp:232 #18 0x000000000041bc68 in boost::unit_test::traverse_test_tree (suite=..., V=...) at /usr/include/boost/test/impl/unit_test_suite.ipp:207 #19 0x000000000041c03c in boost::unit_test::traverse_test_tree (id=1, V=...) at /usr/include/boost/test/impl/unit_test_suite.ipp:234 #20 0x00000000004090a7 in boost::unit_test::framework::run (id=1, continue_test=true) at /usr/include/boost/test/impl/framework.ipp:436 #21 0x000000000041717c in boost::unit_test::unit_test_main (init_func=0x41d3f8 <init_unit_test_suite(int, char**)>, argc=1, argv=0x7fffffffe398) at /usr/include/boost/test/impl/unit_test_main.ipp:185 #22 0x0000000000417376 in main (argc=1, argv=0x7fffffffe398) at /usr/include/boost/test/impl/unit_test_main.ipp:237 (gdb) s Glass (this=0x7fffffffcdc0, _size=..., _periodic=...) at glass.cc:7 7 } (gdb) bt #0 Glass (this=0x7fffffffcdc0, _size=..., _periodic=...) at glass.cc:7 #1 0x000000000041d50b in sq_dist::test_method (this=0x7fffffffce6f) at test_glass.cc:10 #2 0x0000000000410101 in boost::itest::expectations_logger::data_flow (this=Cannot access memory at address 0x3fdffffffffffe38 ) at /usr/include/boost/test/impl/logged_expectations.ipp:188 Cannot access memory at address 0x3fe0000000000008