Running on RedHat Linux, compiled with gcc 4.x. Program terminates with "Transport endpoint is not connected" -- io_service::run (processing loop) ends with exception thrown. I'm using asynchronous API.
Stack trace of optimized debug (-02 -g) binary shows:
#0 0x0000003a15a30155 in raise () from /lib64/libc.so.6
#1 0x0000003a15a31bf0 in abort () from /lib64/libc.so.6
#2 0x0000003a15a6a38b in __libc_message () from /lib64/libc.so.6
#3 0x0000003a15a71634 in _int_free () from /lib64/libc.so.6
#4 0x0000003a15a74c5c in free () from /lib64/libc.so.6
#5 0x00000000005093b0 in boost::asio::detail::epoll_reactor<false>::cleanup_operations_and_timers ()
#6 0x000000000050e6aa in boost::asio::detail::epoll_reactor<false>::run ()
#7 0x000000000050ebe3 in boost::asio::detail::task_io_service<boost::asio::detail::epoll_reactor<false> >::run ()
The problem occurs sporadically, under moderate load (about 30 client connections). Appears to be coming from cleanup_operations_and_timers()
I
can catch exceptions leaking from io_service::run, but would appreciate
more info on why this occurs and whether it has other side-effects.
Thanks,
Slawomir