hmm, why are you clearing out the waiters?  you're invalidating iterators that are sitting out in asio wait events.