id summary reporter owner description type status milestone component version severity resolution keywords cc 8671 promise: set_..._at_thread_exit viboes viboes "~promise needs to check if the promise shared state will be set at thread exit and set_exception_and_thread_exit needs to set this state. {{{ Index: future.hpp =================================================================== --- future.hpp (revision 84678) +++ future.hpp (working copy) @@ -443,6 +443,7 @@ throw_exception(promise_already_satisfied()); } exception=e; + this->is_constructed = true; get_current_thread_data()->make_ready_at_thread_exit(shared_from_this()); } bool has_value() @@ -1746,7 +1747,7 @@ { boost::unique_lock lock(future_->mutex); - if(!future_->done) + if(!future_->done && !future_->is_constructed) { future_->mark_exceptional_finish_internal(boost::copy_exception(broken_promise()), lock); } @@ -1915,7 +1916,7 @@ { boost::unique_lock lock(future_->mutex); - if(!future_->done) + if(!future_->done && !future_->is_constructed) { future_->mark_exceptional_finish_internal(boost::copy_exception(broken_promise()), lock); } @@ -2057,7 +2058,7 @@ { boost::unique_lock lock(future_->mutex); - if(!future_->done) + if(!future_->done && !future_->is_constructed) { future_->mark_exceptional_finish_internal(boost::copy_exception(broken_promise()), lock); } }}} " Bugs closed Boost 1.54.0 thread Boost 1.53.0 Problem fixed