Opened 8 years ago

Last modified 7 years ago

#10756 new Bugs

AddressSanitizer container overflow in deadline_timer

Reported by: harjotgill@… Owned by: chris_kohlhoff
Milestone: To Be Determined Component: asio
Version: Boost 1.56.0 Severity: Problem
Keywords: AddressSanitizer Cc:

Description

I am scheduling 3 ASIO deadline timers back-to-back, wrapping them in a single strand. There is a single thread that services io_service->run(). I see the following "container-overflow" violation:

=================================================================
==16399==ERROR: AddressSanitizer: container-overflow on address 0x60c000017550 at pc 0x0001088e1b3a bp 0x00010ea96510 sp 0x00010ea95cd0
READ of size 8 at 0x60c000017550 thread T2
    #0 0x1088e1b39 in __asan_memcpy (/opt/local/libexec/llvm-3.6/lib/clang/3.6.0/lib/darwin/libclang_rt.asan_osx_dynamic.dylib+0x24b39)
    #1 0x1084a286a in boost::date_time::counted_time_rep<boost::posix_time::millisec_posix_time_system_config>::time_count() const (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x10056186a)
    #2 0x1084a264e in boost::date_time::counted_time_system<boost::date_time::counted_time_rep<boost::posix_time::millisec_posix_time_system_config> >::is_less(boost::date_time::counted_time_rep<boost::posix_time::millisec_posix_time_system_config> const&, boost::date_time::counted_time_rep<boost::posix_time::millisec_posix_time_system_config> const&) (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x10056164e)
    #3 0x10808ccec in boost::date_time::base_time<boost::posix_time::ptime, boost::date_time::counted_time_system<boost::date_time::counted_time_rep<boost::posix_time::millisec_posix_time_system_config> > >::operator<(boost::posix_time::ptime const&) const (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x10014bcec)
    #4 0x10823e079 in boost::asio::time_traits<boost::posix_time::ptime>::less_than(boost::posix_time::ptime const&, boost::posix_time::ptime const&) (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x1002fd079)
    #5 0x108297b9a in boost::asio::detail::timer_queue<boost::asio::detail::forwarding_posix_time_traits>::down_heap(unsigned long) (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x100356b9a)
    #6 0x108296b02 in boost::asio::detail::timer_queue<boost::asio::detail::forwarding_posix_time_traits>::remove_timer(boost::asio::detail::timer_queue<boost::asio::detail::forwarding_posix_time_traits>::per_timer_data&) (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x100355b02)
    #7 0x1083bc9ef in boost::asio::detail::timer_queue<boost::asio::detail::forwarding_posix_time_traits>::get_ready_timers(boost::asio::detail::op_queue<boost::asio::detail::task_io_service_operation>&) (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x10047b9ef)
    #8 0x1083ba430 in boost::asio::detail::timer_queue<boost::asio::time_traits<boost::posix_time::ptime> >::get_ready_timers(boost::asio::detail::op_queue<boost::asio::detail::task_io_service_operation>&) (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x100479430)
    #9 0x10960c74c in boost::asio::detail::timer_queue_set::get_ready_timers(boost::asio::detail::op_queue<boost::asio::detail::task_io_service_operation>&) (/Users/hgill/Work/dpi/sp4/build_debug/install/lib/libgencore-platform.dylib+0x4374c)
    #10 0x10960c0cd in boost::asio::detail::kqueue_reactor::run(bool, boost::asio::detail::op_queue<boost::asio::detail::task_io_service_operation>&) (/Users/hgill/Work/dpi/sp4/build_debug/install/lib/libgencore-platform.dylib+0x430cd)
    #11 0x10960b846 in boost::asio::detail::task_io_service::do_run_one(boost::asio::detail::scoped_lock<boost::asio::detail::posix_mutex>&, boost::asio::detail::task_io_service_thread_info&, boost::system::error_code const&) (/Users/hgill/Work/dpi/sp4/build_debug/install/lib/libgencore-platform.dylib+0x42846)
    #12 0x10960b3aa in boost::asio::detail::task_io_service::run(boost::system::error_code&) (/Users/hgill/Work/dpi/sp4/build_debug/install/lib/libgencore-platform.dylib+0x423aa)
    #13 0x1095e2940 in boost::asio::io_service::run() (/Users/hgill/Work/dpi/sp4/build_debug/install/lib/libgencore-platform.dylib+0x19940)
    #14 0x1095d01f7 in eximius::Platform::ProcessorRun(unsigned int) (/Users/hgill/Work/dpi/sp4/build_debug/install/lib/libgencore-platform.dylib+0x71f7)
    #15 0x1095e81fe in void boost::_bi::list1<boost::_bi::value<unsigned int> >::operator()<void (*)(unsigned int), boost::_bi::list0>(boost::_bi::type<void>, void (*&)(unsigned int), boost::_bi::list0&, int) (/Users/hgill/Work/dpi/sp4/build_debug/install/lib/libgencore-platform.dylib+0x1f1fe)
    #16 0x1095e817b in boost::_bi::bind_t<void, void (*)(unsigned int), boost::_bi::list1<boost::_bi::value<unsigned int> > >::operator()() (/Users/hgill/Work/dpi/sp4/build_debug/install/lib/libgencore-platform.dylib+0x1f17b)
    #17 0x1095f5d7b in boost::detail::thread_data<boost::_bi::bind_t<void, void (*)(unsigned int), boost::_bi::list1<boost::_bi::value<unsigned int> > > >::run() (/Users/hgill/Work/dpi/sp4/build_debug/install/lib/libgencore-platform.dylib+0x2cd7b)
    #18 0x10a477d04 in boost::(anonymous namespace)::thread_proxy(void*) (/opt/local/lib/libboost_thread-mt.dylib+0x2d04)
    #19 0x7fff93dbc2fb in _pthread_body (/usr/lib/system/libsystem_pthread.dylib+0x32fb)
    #20 0x7fff93dbc278 in _pthread_start (/usr/lib/system/libsystem_pthread.dylib+0x3278)
    #21 0x7fff93dba4b0 in thread_start (/usr/lib/system/libsystem_pthread.dylib+0x14b0)

0x60c000017550 is located 80 bytes inside of 128-byte region [0x60c000017500,0x60c000017580)
allocated by thread T0 here:
    #0 0x1088ea2ab in wrap__Znwm (/opt/local/libexec/llvm-3.6/lib/clang/3.6.0/lib/darwin/libclang_rt.asan_osx_dynamic.dylib+0x2d2ab)
    #1 0x108248c8a in std::__1::__split_buffer<boost::asio::detail::timer_queue<boost::asio::detail::forwarding_posix_time_traits>::heap_entry, std::__1::allocator<boost::asio::detail::timer_queue<boost::asio::detail::forwarding_posix_time_traits>::heap_entry>&>::__split_buffer(unsigned long, unsigned long, std::__1::allocator<boost::asio::detail::timer_queue<boost::asio::detail::forwarding_posix_time_traits>::heap_entry>&) (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x100307c8a)
    #2 0x108241d93 in std::__1::__split_buffer<boost::asio::detail::timer_queue<boost::asio::detail::forwarding_posix_time_traits>::heap_entry, std::__1::allocator<boost::asio::detail::timer_queue<boost::asio::detail::forwarding_posix_time_traits>::heap_entry>&>::__split_buffer(unsigned long, unsigned long, std::__1::allocator<boost::asio::detail::timer_queue<boost::asio::detail::forwarding_posix_time_traits>::heap_entry>&) (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x100300d93)
    #3 0x108241498 in void std::__1::vector<boost::asio::detail::timer_queue<boost::asio::detail::forwarding_posix_time_traits>::heap_entry, std::__1::allocator<boost::asio::detail::timer_queue<boost::asio::detail::forwarding_posix_time_traits>::heap_entry> >::__push_back_slow_path<boost::asio::detail::timer_queue<boost::asio::detail::forwarding_posix_time_traits>::heap_entry const>(boost::asio::detail::timer_queue<boost::asio::detail::forwarding_posix_time_traits>::heap_entry const&) (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x100300498)
    #4 0x10823c621 in boost::asio::detail::timer_queue<boost::asio::detail::forwarding_posix_time_traits>::enqueue_timer(boost::posix_time::ptime const&, boost::asio::detail::timer_queue<boost::asio::detail::forwarding_posix_time_traits>::per_timer_data&, boost::asio::detail::wait_op*) (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x1002fb621)
    #5 0x10823b51a in boost::asio::detail::timer_queue<boost::asio::time_traits<boost::posix_time::ptime> >::enqueue_timer(boost::posix_time::ptime const&, boost::asio::detail::timer_queue<boost::asio::detail::forwarding_posix_time_traits>::per_timer_data&, boost::asio::detail::wait_op*) (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x1002fa51a)
    #6 0x108238e17 in void boost::asio::detail::kqueue_reactor::schedule_timer<boost::asio::time_traits<boost::posix_time::ptime> >(boost::asio::detail::timer_queue<boost::asio::time_traits<boost::posix_time::ptime> >&, boost::asio::time_traits<boost::posix_time::ptime>::time_type const&, boost::asio::detail::timer_queue<boost::asio::time_traits<boost::posix_time::ptime> >::per_timer_data&, boost::asio::detail::wait_op*) (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x1002f7e17)
    #7 0x1082375bc in void boost::asio::detail::deadline_timer_service<boost::asio::time_traits<boost::posix_time::ptime> >::async_wait<boost::asio::detail::wrapped_handler<boost::asio::io_service::strand, boost::_bi::bind_t<void, boost::_mfi::mf1<void, eximius::EximiusTimerHandler<boost::function<void ()> >, boost::system::error_code const&>, boost::_bi::list2<boost::_bi::value<eximius::EximiusTimerHandler<boost::function<void ()> >*>, boost::arg<1> (*)()> >, boost::asio::detail::is_continuation_if_running> >(boost::asio::detail::deadline_timer_service<boost::asio::time_traits<boost::posix_time::ptime> >::implementation_type&, boost::asio::detail::wrapped_handler<boost::asio::io_service::strand, boost::_bi::bind_t<void, boost::_mfi::mf1<void, eximius::EximiusTimerHandler<boost::function<void ()> >, boost::system::error_code const&>, boost::_bi::list2<boost::_bi::value<eximius::EximiusTimerHandler<boost::function<void ()> >*>, boost::arg<1> (*)()> >, boost::asio::detail::is_continuation_if_running>&) (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x1002f65bc)
    #8 0x108236536 in boost::asio::async_result<boost::asio::handler_type<boost::asio::detail::wrapped_handler<boost::asio::io_service::strand, boost::_bi::bind_t<void, boost::_mfi::mf1<void, eximius::EximiusTimerHandler<boost::function<void ()> >, boost::system::error_code const&>, boost::_bi::list2<boost::_bi::value<eximius::EximiusTimerHandler<boost::function<void ()> >*>, boost::arg<1> (*)()> >, boost::asio::detail::is_continuation_if_running>, void (boost::system::error_code)>::type>::type boost::asio::deadline_timer_service<boost::posix_time::ptime, boost::asio::time_traits<boost::posix_time::ptime> >::async_wait<boost::asio::detail::wrapped_handler<boost::asio::io_service::strand, boost::_bi::bind_t<void, boost::_mfi::mf1<void, eximius::EximiusTimerHandler<boost::function<void ()> >, boost::system::error_code const&>, boost::_bi::list2<boost::_bi::value<eximius::EximiusTimerHandler<boost::function<void ()> >*>, boost::arg<1> (*)()> >, boost::asio::detail::is_continuation_if_running> >(boost::asio::detail::deadline_timer_service<boost::asio::time_traits<boost::posix_time::ptime> >::implementation_type&, boost::asio::detail::wrapped_handler<boost::asio::io_service::strand, boost::_bi::bind_t<void, boost::_mfi::mf1<void, eximius::EximiusTimerHandler<boost::function<void ()> >, boost::system::error_code const&>, boost::_bi::list2<boost::_bi::value<eximius::EximiusTimerHandler<boost::function<void ()> >*>, boost::arg<1> (*)()> >, boost::asio::detail::is_continuation_if_running> const&) (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x1002f5536)
    #9 0x108205259 in boost::asio::async_result<boost::asio::handler_type<boost::asio::detail::wrapped_handler<boost::asio::io_service::strand, boost::_bi::bind_t<void, boost::_mfi::mf1<void, eximius::EximiusTimerHandler<boost::function<void ()> >, boost::system::error_code const&>, boost::_bi::list2<boost::_bi::value<eximius::EximiusTimerHandler<boost::function<void ()> >*>, boost::arg<1> (*)()> >, boost::asio::detail::is_continuation_if_running>, void (boost::system::error_code)>::type>::type boost::asio::basic_deadline_timer<boost::posix_time::ptime, boost::asio::time_traits<boost::posix_time::ptime>, boost::asio::deadline_timer_service<boost::posix_time::ptime, boost::asio::time_traits<boost::posix_time::ptime> > >::async_wait<boost::asio::detail::wrapped_handler<boost::asio::io_service::strand, boost::_bi::bind_t<void, boost::_mfi::mf1<void, eximius::EximiusTimerHandler<boost::function<void ()> >, boost::system::error_code const&>, boost::_bi::list2<boost::_bi::value<eximius::EximiusTimerHandler<boost::function<void ()> >*>, boost::arg<1> (*)()> >, boost::asio::detail::is_continuation_if_running> >(boost::asio::detail::wrapped_handler<boost::asio::io_service::strand, boost::_bi::bind_t<void, boost::_mfi::mf1<void, eximius::EximiusTimerHandler<boost::function<void ()> >, boost::system::error_code const&>, boost::_bi::list2<boost::_bi::value<eximius::EximiusTimerHandler<boost::function<void ()> >*>, boost::arg<1> (*)()> >, boost::asio::detail::is_continuation_if_running> const&) (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x1002c4259)
    #10 0x1081f95d6 in eximius::EximiusTimerHandler<boost::function<void ()> >::StartTimer() (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x1002b85d6)
    #11 0x108081a7c in int eximius::Platform::ScheduleTimer<boost::function<void ()> >(boost::posix_time::time_duration const&, boost::function<void ()> const&, bool, char const*, unsigned int, unsigned int) (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x100140a7c)
    #12 0x107fe3143 in eximius::ProcessControl::StartTimers() (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x1000a2143)
    #13 0x107f75593 in eximius::ProcessControl::StartApplication() (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x100034593)
    #14 0x1096bc66e in eximius::EximiusApplication::StartEximiusApplication() (/Users/hgill/Work/dpi/sp4/build_debug/install/lib/libgencore-platform.dylib+0xf366e)
    #15 0x108585856 in main (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x100644856)
    #16 0x7fff9077f5c8 in start (/usr/lib/system/libdyld.dylib+0x35c8)
    #17 0x0 (<unknown module>)

Thread T2 created by T0 here:
    #0 0x1088e106f in wrap_pthread_create (/opt/local/libexec/llvm-3.6/lib/clang/3.6.0/lib/darwin/libclang_rt.asan_osx_dynamic.dylib+0x2406f)
    #1 0x10a477c1b in boost::thread::start_thread_noexcept() (/opt/local/lib/libboost_thread-mt.dylib+0x2c1b)
    #2 0x1095f4d04 in boost::thread::start_thread() (/Users/hgill/Work/dpi/sp4/build_debug/install/lib/libgencore-platform.dylib+0x2bd04)
    #3 0x1095f4c65 in boost::thread::thread<boost::_bi::bind_t<void, void (*)(unsigned int), boost::_bi::list1<boost::_bi::value<unsigned int> > > >(boost::_bi::bind_t<void, void (*)(unsigned int), boost::_bi::list1<boost::_bi::value<unsigned int> > >, boost::disable_if_c<boost::thread_detail::is_convertible<boost::_bi::bind_t<void, void (*)(unsigned int), boost::_bi::list1<boost::_bi::value<unsigned int> > >&, boost::detail::thread_move_t<boost::_bi::bind_t<void, void (*)(unsigned int), boost::_bi::list1<boost::_bi::value<unsigned int> > > > >::value, boost::thread::dummy*>::type) (/Users/hgill/Work/dpi/sp4/build_debug/install/lib/libgencore-platform.dylib+0x2bc65)
    #4 0x1095e307a in boost::thread::thread<boost::_bi::bind_t<void, void (*)(unsigned int), boost::_bi::list1<boost::_bi::value<unsigned int> > > >(boost::_bi::bind_t<void, void (*)(unsigned int), boost::_bi::list1<boost::_bi::value<unsigned int> > >, boost::disable_if_c<boost::thread_detail::is_convertible<boost::_bi::bind_t<void, void (*)(unsigned int), boost::_bi::list1<boost::_bi::value<unsigned int> > >&, boost::detail::thread_move_t<boost::_bi::bind_t<void, void (*)(unsigned int), boost::_bi::list1<boost::_bi::value<unsigned int> > > > >::value, boost::thread::dummy*>::type) (/Users/hgill/Work/dpi/sp4/build_debug/install/lib/libgencore-platform.dylib+0x1a07a)
    #5 0x1095da31f in eximius::Platform::Initialize() (/Users/hgill/Work/dpi/sp4/build_debug/install/lib/libgencore-platform.dylib+0x1131f)
    #6 0x1085803a8 in main (/Users/hgill/Work/dpi/sp4/build_debug/install/./bin/process-manager+0x10063f3a8)
    #7 0x7fff9077f5c8 in start (/usr/lib/system/libdyld.dylib+0x35c8)
    #8 0x0 (<unknown module>)

SUMMARY: AddressSanitizer: container-overflow ??:0 __asan_memcpy
Shadow bytes around the buggy address:
  0x1c1800002e50: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd
  0x1c1800002e60: fd fd fd fd fd fd fd fd fa fa fa fa fa fa fa fa
  0x1c1800002e70: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x1c1800002e80: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd
  0x1c1800002e90: fd fd fd fd fd fd fd fd fa fa fa fa fa fa fa fa
=>0x1c1800002ea0: 00 00 00 00 00 00 00 00 00 00[fc]fc fc fc fc fc
  0x1c1800002eb0: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd
  0x1c1800002ec0: fd fd fd fd fd fd fd fa fa fa fa fa fa fa fa fa
  0x1c1800002ed0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x1c1800002ee0: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd
  0x1c1800002ef0: fd fd fd fd fd fd fd fd fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07 
  Heap left redzone:       fa
  Heap right redzone:      fb
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack partial redzone:   f4
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  ASan internal:           fe
==16399==ABORTING

Somehow, the problem goes away when I schedule < 3 timers.

Change History (3)

comment:1 by wsmith@…, 8 years ago

I have what seems to be a similar failure, caused by canceling a timer. On OS X 10.10/64-bit, I get a SIGSEGV intermittently.

* thread #2: tid = 0x1e063a, 0x00000001002806ce shared-tests`boost::asio::detail::timer_queue<boost::asio::detail::forwarding_posix_time_traits>::remove_timer(this=0x000000010202d1e8, timer=0x0000000102100d78) + 1230 at timer_queue.hpp:262, stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
    frame #0: 0x00000001002806ce shared-tests`boost::asio::detail::timer_queue<boost::asio::detail::forwarding_posix_time_traits>::remove_timer(this=0x000000010202d1e8, timer=0x0000000102100d78) + 1230 at timer_queue.hpp:262
   259 	    if (timers_ == &timer)
   260 	      timers_ = timer.next_;
   261 	    if (timer.prev_)
-> 262 	      timer.prev_->next_ = timer.next_;
   263 	    if (timer.next_)
   264 	      timer.next_->prev_= timer.prev_;
   265 	    timer.next_ = 0;
(lldb) l -
   252 	          up_heap(index);
   253 	        else
   254 	          down_heap(index);
   255 	      }
   256 	    }
   257 	
   258 	    // Remove the timer from the linked list of active timers.
(lldb) l
   259 	    if (timers_ == &timer)
   260 	      timers_ = timer.next_;
   261 	    if (timer.prev_)
   262 	      timer.prev_->next_ = timer.next_;
   263 	    if (timer.next_)
   264 	      timer.next_->prev_= timer.prev_;
   265 	    timer.next_ = 0;

comment:1 by wsmith@…, 8 years ago

I have what seems to be a similar failure, caused by canceling a timer. On OS X 10.10/64-bit, I get a SIGSEGV intermittently.

* thread #2: tid = 0x1e063a, 0x00000001002806ce shared-tests`boost::asio::detail::timer_queue<boost::asio::detail::forwarding_posix_time_traits>::remove_timer(this=0x000000010202d1e8, timer=0x0000000102100d78) + 1230 at timer_queue.hpp:262, stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
    frame #0: 0x00000001002806ce shared-tests`boost::asio::detail::timer_queue<boost::asio::detail::forwarding_posix_time_traits>::remove_timer(this=0x000000010202d1e8, timer=0x0000000102100d78) + 1230 at timer_queue.hpp:262
   259 	    if (timers_ == &timer)
   260 	      timers_ = timer.next_;
   261 	    if (timer.prev_)
-> 262 	      timer.prev_->next_ = timer.next_;
   263 	    if (timer.next_)
   264 	      timer.next_->prev_= timer.prev_;
   265 	    timer.next_ = 0;
(lldb) l -
   252 	          up_heap(index);
   253 	        else
   254 	          down_heap(index);
   255 	      }
   256 	    }
   257 	
   258 	    // Remove the timer from the linked list of active timers.
(lldb) l
   259 	    if (timers_ == &timer)
   260 	      timers_ = timer.next_;
   261 	    if (timer.prev_)
   262 	      timer.prev_->next_ = timer.next_;
   263 	    if (timer.next_)
   264 	      timer.next_->prev_= timer.prev_;
   265 	    timer.next_ = 0;

comment:2 by karulis@…, 7 years ago

Similar issue on Windows 7, boost 1.57.0:

\boost::asio::detail::timer_queue<boost::asio::detail::forwarding_posix_time_traits>::remove_timer(boost::asio::detail::timer_queue<boost::asio::detail::forwarding_posix_time_traits>::per_timer_data & timer) Line 262	C++
\boost::asio::detail::timer_queue<boost::asio::detail::forwarding_posix_time_traits>::get_ready_timers(boost::asio::detail::op_queue<boost::asio::detail::win_iocp_operation> & ops) Line 152	C++
\boost::asio::detail::timer_queue<boost::asio::time_traits<boost::posix_time::ptime> >::get_ready_timers(boost::asio::detail::op_queue<boost::asio::detail::win_iocp_operation> & ops) Line 64	C++
\boost::asio::detail::timer_queue_set::get_ready_timers(boost::asio::detail::op_queue<boost::asio::detail::win_iocp_operation> & ops) Line 88	C++
\boost::asio::detail::win_iocp_io_service::do_one(bool block, boost::system::error_code & ec) Line 358	C++
\boost::asio::detail::win_iocp_io_service::run(boost::system::error_code & ec) Line 164	C++
\boost::asio::io_service::run() Line 59	C++
Note: See TracTickets for help on using tickets.