Opened 7 years ago
Closed 7 years ago
#11250 closed Bugs (fixed)
future made from make_exceptional fails on assertion in destructor
Reported by: | Owned by: | viboes | |
---|---|---|---|
Milestone: | Boost 1.60.0 | Component: | thread |
Version: | Boost 1.58.0 | Severity: | Problem |
Keywords: | make_exceptional assert | Cc: |
Description
A future created from make_exceptional fails an assertion during destruction:
../include/boost/thread/future.hpp:155: virtual boost::detail::shared_state_base::~shared_state_base(): Assertion `cnt_==0' failed.
The error can be reproduced by calling compute(-1)
in examples/make_future.cpp
Trace:
#0 0x0000003b1f6348d7 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:55 #1 0x0000003b1f63653a in __GI_abort () at abort.c:89 #2 0x0000003b1f62d47d in __assert_fail_base (fmt=0x3b1f786cb8 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=assertion@entry=0x42a333 "cnt_==0", file=file@entry=0x42a310 "../include/boost/thread/future.hpp", line=line@entry=155, function=function@entry=0x42a8a0 <boost::detail::shared_state_base::~shared_state_base()::__PRETTY_FUNCTION__> "virtual boost::detail::shared_state_base::~shared_state_base()") at assert.c:92 #3 0x0000003b1f62d532 in __GI___assert_fail (assertion=0x42a333 "cnt_==0", file=0x42a310 "../include/boost/thread/future.hpp", line=155, function=0x42a8a0 <boost::detail::shared_state_base::~shared_state_base()::__PRETTY_FUNCTION__> "virtual boost::detail::shared_state_base::~shared_state_base()") at assert.c:101 #4 0x000000000040ddb5 in boost::detail::shared_state_base::~shared_state_base (this=0x648200, __in_chrg=<optimized out>) at ../include/boost/thread/future.hpp:155 #5 0x0000000000422e0d in boost::detail::shared_state<int>::~shared_state (this=0x648200, __in_chrg=<optimized out>) at ../include/boost/thread/future.hpp:488 #6 0x0000000000422e3c in boost::detail::shared_state<int>::~shared_state (this=0x648200, __in_chrg=<optimized out>) at ../include/boost/thread/future.hpp:488 #7 0x0000000000423b0b in boost::checked_delete<boost::detail::shared_state<int> > (x=0x648200) at /usr/local/include/boost/core/checked_delete.hpp:34 #8 0x000000000042655e in boost::detail::sp_counted_impl_p<boost::detail::shared_state<int> >::dispose ( this=0x6481c0) at /usr/local/include/boost/smart_ptr/detail/sp_counted_impl.hpp:78 #9 0x000000000040ac4a in boost::detail::sp_counted_base::release (this=0x6481c0) at /usr/local/include/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp:146 #10 0x000000000040ad0d in boost::detail::shared_count::~shared_count (this=0x7fffffffd8e8, __in_chrg=<optimized out>) at /usr/local/include/boost/smart_ptr/detail/shared_count.hpp:443 #11 0x0000000000418c7a in boost::shared_ptr<boost::detail::shared_state<int> >::~shared_ptr (this=0x7fffffffd8e0, __in_chrg=<optimized out>) at /usr/local/include/boost/smart_ptr/shared_ptr.hpp:323 #12 0x0000000000418ff2 in boost::detail::basic_future<int>::~basic_future (this=0x7fffffffd8e0, __in_chrg=<optimized out>) at ../include/boost/thread/future.hpp:1189 #13 0x0000000000412882 in boost::future<int>::~future (this=0x7fffffffd8e0, __in_chrg=<optimized out>) at ../include/boost/thread/future.hpp:1541 #14 0x000000000040a3db in main () at make_future.cpp:100
Change History (5)
comment:1 by , 7 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
comment:2 by , 7 years ago
comment:3 by , 7 years ago
Milestone: | To Be Determined → Boost 1.59.0 |
---|
comment:4 by , 7 years ago
Milestone: | Boost 1.59.0 → Boost 1.60.0 |
---|
comment:5 by , 7 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Note:
See TracTickets
for help on using tickets.
Thanks for catching this untested function.