Boost logo

Boost Users :

Subject: [Boost-users] [asio] need help with timer crash please
From: bnv_at_[hidden]
Date: 2009-03-26 13:54:17


I incorrectly posted this to the boost developer's list, and am posting here to rectify that...

I'm seeing two distinct crashes (gdb output below) on expiration of a
deadline timer, and could use some help identifying possible reasons.

The timer has not been deleted. The timer expired once before and was later
rescheduled using expires_from_now() and async_wait(). The timer is only
accessed by threads in io_service::run(), and is protected by a mutex.

Form the gdb output, I'm guessing the timer is being removed on expiration
and the internal structures have somehow been trashed. Any pointers to
possible explanations would be appreciated.

crash 1...

> Program received signal SIGSEGV, Segmentation fault.
> [Switching to thread 3500.0x83c]
> 0x5ae9a800 in ?? ()
> (gdb) bt full
> #0 0x5ae9a800 in ?? ()
> No symbol table info available.
> #1 0x005ae5f7 in
> boost::asio::detail::timer_queue<boost::asio::time_traits<boos
> t::posix_time::ptime> >::complete_timers (this=0x5387f74)
> at /usr/local/include/boost-1_38/boost/asio/detail/timer_queue.hpp:205
> this = (
> timer_queue<boost::asio::time_traits<boost::posix_time::ptime> > *
> const) 0x
> 5387f74
> this_timer = (
> timer_queue<boost::asio::time_traits<boost::posix_time::ptime>
> >::timer_base
> *) 0x53a4faf
> #2 0x053a4fb7 in ?? ()
> No symbol table info available.
> #3 0x1dcdcb20 in ?? ()
> No symbol table info available.
> #4 0x005bf1c0 in
> boost::asio::detail::select_reactor<false>::complete_operation
> s_and_timers (this=0x658, lock=@0x1dcd9498)
> at /usr/lib/gcc/i686-pc-cygwin/3.4.4/include/c++/bits/stl_vector.h:462
> this = (class select_reactor< false> * const) 0x658
> this = (scoped_lock<boost::asio::detail::posix_mutex> * const) 0xa
> i = 500011328
> #5 0x00000000 in ?? ()
> No symbol table info available.
> (gdb)

crash 2...

> Program received signal SIGSEGV, Segmentation fault.
> [Switching to thread 1320.0xa08]
> 0x005adff1 in
> boost::asio::detail::timer_queue<boost::asio::time_traits<boost::p
> osix_time::ptime> >::remove_timer (this=0x5387f74, t=0x53aac70)
> at /usr/local/include/boost-1_38/boost/asio/detail/timer_queue.hpp:399
> 399 t->prev_->next_ = t->next_;
> (gdb) bt full
> #0 0x005adff1 in
> boost::asio::detail::timer_queue<boost::asio::time_traits<boos
> t::posix_time::ptime> >::remove_timer (this=0x5387f74, t=0x53aac70)
> at /usr/local/include/boost-1_38/boost/asio/detail/timer_queue.hpp:399
> this = (
> timer_queue<boost::asio::time_traits<boost::posix_time::ptime> > *
> const) 0x
> 5387f74
> index = 87735592
> it = {_M_node = 0x53aad20}
> #1 0x00000002 in ?? ()
> No symbol table info available.
> #2 0x00000000 in ?? ()
> No symbol table info available.
> (gdb)

Thanks,
Brian


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net