> io_service.run();
Put some debug message here, to see when the io_service::run ends.
 
> io_service.reset();
 
Why reset?!