[Asio] Serial port communication problem when upgrading from Boost 1.64 to 1.84
Hello everyone, I have a program that uses Boost Asio and I want to upgrade from Boost 1.64 to 1.84. The program uses one io_service in one thread. After startup, 2 posix::basic_stream_descriptors, one boost::asio::serial_port, and several boost::asio::ip::tcp::sockets are registered. The program is structured as follows: it starts async_read_some calls on the objects created above, then calls the io_context::run() method. If data arrives to any TCP socket or stream descriptor, the appropriate action is taken in the program through a chain of async handlers. I always restart the async reads after receiving a request, so the io_context always has work to do and does not stop. My problem is that serial port communication does not work properly in the program under version Boost 1.84. When I send a message to the serial device with async_write_some, I do not receive some part or the whole response using async_read_some or async_read_until (even with a very long timeout). If I use the BOOST_ASIO_DISABLE_EPOLL macro when building, serial port communication works fine, as it did with Boost 1.64. I created a separate small program that only contains serial port communication written with Boost Asio. However, this small program works fine even without the BOOST_ASIO_DISABLE_EPOLL macro in Boost 1.84. My question is, where should I look for the cause of the error in the original program? Thank you in advance. Note: This is a cross-compiled program where the older program using Boost 1.64 ran on a device with Linux kernel 4.9 (32-bit), while the new Boost 1.84 version should run on Linux kernel 6.6 (64-bit).
participants (1)
-
rumplerbalint@gmail.com