Gennadiy Rozental 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/ 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/ (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/ (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::invokerboost::unit_test::ut_detail::unused::invoke (this=0x7fffffffcecf, f=@0x6d1a08)
at /usr/include/boost/test/utils/callback.hpp:56
#5 0x000000000046fdf7 in boost::unit_test::ut_detail::callback0_impl_t::invoke (this=0x6d1a00)
at /usr/include/boost/test/utils/callback.hpp:89
#6 0x0000000000439c85 in boost::unit_test::callback0boost::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 invokeboost::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_invokeboost::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 , 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