> The way I use can be sketched by:
> ============================
> open a tcp socket
> bind to a port
> asynchronously connect to a remote host
> in callback if it fails (may get expected errors), asynchronously reconnect
> to remote host, up to specified times
> In callback I get "abort" error after every reconnect
>
> Any further help to debug this is appreciated.

I guess the server (host) closes the connection for some reason, so
you have to debug your server and see what happens there after an
incoming connection is accepted.

BTW, there's a dedicated asio mailing list:
http://news.gmane.org/group/gmane.comp.lib.boost.asio.user

Thanks. This is very helpful information.
I found the direct reason. After a failed connect, the socket has been somehow closed. So reconnect cannot be carried out.