Subject: [Boost-bugs] [Boost C++ Libraries] #5846: Boost::Test: intermittent crash during testing
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2011-08-30 08:48:11
#5846: Boost::Test: intermittent crash during testing
------------------------------+---------------------------------------------
Reporter: anonymous | Owner:
Type: Bugs | Status: new
Milestone: To Be Determined | Component: None
Version: Boost 1.47.0 | Severity: Problem
Keywords: |
------------------------------+---------------------------------------------
Our tests spin up 64 threads and then exercise various objects. Upon
thread exit, the thread prints a simple message (args.id is the internal
thread number):
{{{
BOOST_MESSAGE( "Thread " << args.id << " completed" );
}}}
The problem is tough to reproduce, but I've got one under the debugger. It
appears Boost::Test has missed a lock in execution_monitor.
We are compiling with both CXXFLAGS += -D_REENTRANT and LDLIBS +=
-lpthread. Boost::Test compilation page
(http://www.boost.org/doc/libs/1_47_0/libs/test/doc/html/execution-
monitor/compilation.html) does not specify any additional flags for
multithreaded testing, and the FAQ
(http://www.boost.org/doc/libs/1_47_0/libs/test/doc/html/faq.html) does
not mention any special steps.
=== Console 1 ===
$ ./test/run_esapi_tests
Running 30 test cases...
terminate called after throwing an instance of 'std::length_error'
what(): basic_string::_S_create
[Program hangs here]
=== Console 2 ===
$ ps -a
PID TTY TIME CMD
14779 pts/0 00:00:01 run_esapi_tests
14846 pts/1 00:00:00 ps
$ gdb attach 14779
GNU gdb (GDB) 7.1-ubuntu
Copyright (C) 2010 Free Software Foundation, Inc.
...
Loaded symbols for /lib/libpthread.so.0
...
Loaded symbols for /lib/librt.so.1
__lll_lock_wait () at
../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136
136 ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: No such
file or directory.
in ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S
(gdb) where
#0 __lll_lock_wait ()
at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136
#1 0x00007f24bdc595f4 in _L_lock_1024 () from /lib/libpthread.so.0
#2 0x00007f24bdc59457 in __pthread_mutex_lock (mutex=0x7f24be08d948)
at pthread_mutex_lock.c:82
#3 0x00007f24bcb1155b in *__GI___dl_iterate_phdr (
callback=0x7f24bcd81910 <_Unwind_IteratePhdrCallback>, data=0x80)
at dl-iteratephdr.c:42
#4 0x00007f24bcd8263f in _Unwind_Find_FDE (pc=0x7f24bcd80b1d,
bases=0x7fffa8e28498)
at ../../../src/libgcc/../gcc/unwind-dw2-fde-glibc.c:417
#5 0x00007f24bcd7fb93 in uw_frame_state_for (context=0x7fffa8e283f0,
fs=<value optimized out>) at ../../../src/libgcc/../gcc/unwind-
dw2.c:1128
#6 0x00007f24bcd804a9 in uw_init_context_1 (context=0x7fffa8e283f0,
outer_cfa=0x7fffa8e28530, outer_ra=0x7f24bcf861c0)
at ../../../src/libgcc/../gcc/unwind-dw2.c:1447
#7 0x00007f24bcd80b1e in _Unwind_RaiseException (exc=0x125a8a0)
at ../../../src/libgcc/../gcc/unwind.inc:88
#8 0x00007f24bd2d4e31 in __cxa_throw (obj=<value optimized out>,
tinfo=0x80,
dest=0) at ../../../../src/libstdc++-v3/libsupc++/eh_throw.cc:78
#9 0x00007f24bd9e755a in boost::execution_monitor::catch_signals (
this=<value optimized out>, F=<value optimized out>)
at ./boost/test/impl/execution_monitor.ipp:958
#10 0x00007f24bd9e759b in boost::execution_monitor::execute (
this=0x7f24bdc4f8c0, F=...) at
./boost/test/impl/execution_monitor.ipp:1282
#11 0x00007f24bda01d8c in
boost::unit_test::unit_test_monitor_t::execute_and_translate
(this=0x7f24bdc4f8c0, tc=<value optimized out>)
at ./boost/test/impl/unit_test_monitor.ipp:69
#12 0x00007f24bd9f2941 in boost::unit_test::framework_impl::visit (
this=0x7f24bdc4f800, tc=<value optimized out>)
at ./boost/test/impl/framework.ipp:150
#13 0x00007f24bda21763 in boost::unit_test::traverse_test_tree (suite=...,
V=...) at ./boost/test/impl/unit_test_suite.ipp:207
#14 0x00007f24bd9efc28 in boost::unit_test::framework::run (
id=<value optimized out>, continue_test=16)
at ./boost/test/impl/framework.ipp:436
#15 0x00007f24bd9fed43 in boost::unit_test::unit_test_main (
init_func=<value optimized out>, argc=<value optimized out>,
argv=<value optimized out>) at
./boost/test/impl/unit_test_main.ipp:185
#16 0x000000000042e402 in main (argc=1, argv=0x7fffa8e295e8)
at /usr/include/boost/test/unit_test.hpp:59
(gdb)
-- Ticket URL: <https://svn.boost.org/trac/boost/ticket/5846> Boost C++ Libraries <http://www.boost.org/> Boost provides free peer-reviewed portable C++ source libraries.
This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:07 UTC