$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
From: Yashin Evgeny (evgeny.yashin_at_[hidden])
Date: 2007-05-28 19:18:13
Here is, minimal example.
struct Conn : public boost::signals::trackable
{
    void operator()(){}
};
void f()
{
    boost::signal<void ()>  sig;
    Conn c;
    sig.connect( c );
    c = Conn();    // crash inside..
}
The reason is simple. During clear() method of std::list, there are 
signals::connection destructor calls are happening, which, in turn, calling 
erase method of the same std::list, and as a result we're getting 
_DEBUG_ERROR("list erase iterator outside range");
I guess, the bug is with "dying" variable: in destructor, it was set to 
true, and then signals::connection destructors are not trying to remove 
themself from the std::list. But in boost::signals::trackable::operator=() 
there is no dying flag marking.
Evgeny.