I am using Boost Asio Library. I am facing difficulty while using boost::async_read() operation. I am using like this. The sample code for server asio read operation is given below.
void HandleClient::StartHandling()
{
    auto self(shared_from_this());
    asio::async_read_until(m_Sock,
                           m_Request,
                           DELIMITER,
                           [this, self](
                           const boost::system::error_code& a_Ec,
                           std::size_t a_BytesRead)
    {
        onRequestReceived(a_Ec, a_BytesRead);
    });
}
void HandleClient::onRequestReceived(const system::error_code &a_Ec, 
        std::size_t a_BytesRead)
{
    if(a_Ec)
    {....}
    auto self(shared_from_this());
    if(a_BytesRead > 0)
    {
    
        auto response = ProcessData(m_Request);
        if(!response.empty())
        {
            m_Data = response + DELIMITER;
            asio::async_write(m_Sock, asio::buffer(m_Data),
                [this, self](boost::system::error_code& a_Ec, std::size_t 
                a_Bytestransferred))
        {
             response_sent(a_Ec, a_Bytestransferred);
        });
    }
    asio::async_read_until(
        m_Sock,
        m_Request,
        DELIMITER,
        [this, self](const boost::system::error_code& a_Ec, std::size_t 
     a_BytesRead)
    {
        onRequestReceived(a_Ec, a_BytesRead);
    });
}
It is getting crashed after some iteration. The crash is random. Client side code is in form of synchronous call. I hope it is not issue. The error message I am getting debug assertion failed message:
Debug assertion failed Program:xx/vc/tools/msvc/14.16.27023/include/xstring Line 1427. Expression cannot deference string iteration because the iterator was invalidated (e.g. reallocation occurred, or the string was destroyed)
 
    