Hello,
here is a simplified code I wrote:

class A{
public:
    A();
    ~A();
    void Run();
    void ThreadA();
    virtual void HandleSomething();
};

void A::HandleSomething()
{

}

void A::ThreadA()
{
    if(condition)
    {
        HandleSomething();
    }
}

void A::Run()
{
    boost::thread thread(&A::ThreadA,this);
}

This is my base class. As you can see the thread calls the virtual function when the condition becomes true. I use the virtual function in my derived class so everytime the condition becomes true the function HandleSomething() should do something. So far, so good but when I try to change some variables in the derived class the program crashes without any warning or error message. I use the latest Ubuntu version with GCC 4.5.3 and boost 1.46.1.