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).
_______________________________________________
Boost-users mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://lists.boost.org/mailman3/lists/boost-users.lists.boost.org/
Archived at: 
https://lists.boost.org/archives/list/[email protected]/message/53WAX3SMQO7CEJSM7CCPLJUUU2JD5VCS/
 

Reply via email to