I use boost1.52 on windows2003sp2, boost::unique_lock throw a exception, please help me.

stack is:
RaiseException
_CxxThrowException
boost::throw_exception<boost::lock_error>[e:\library\boost_1_52\boost\throw_exception.hpp£º67]
boost::shared_mutex::timed_lock[e:\library\boost_1_52\boost\thread\win32\shared_mutex.hpp£º430]
boost::shared_mutex::lock[e:\library\boost_1_52\boost\thread\win32\shared_mutex.hpp£º382]
boost::unique_lock<boost::shared_mutex>::lock[e:\library\boost_1_52\boost\thread\locks.hpp£º510]

------------------------------------------------------------------------
bool timed_lock(boost::system_time const& wait_until)
{
    for(;;)
    {
        state_data old_state=state;

        for(;;)
        {
            state_data new_state=old_state;
            if(new_state.shared_count || new_state.exclusive)
            {
                ++new_state.exclusive_waiting;
                if(!new_state.exclusive_waiting)
                {
                    boost::throw_exception(boost::lock_error());
                }

                new_state.exclusive_waiting_blocked=true;
            }
            else
            {
                new_state.exclusive=true;
            }