I have run into the following issue: an application is polling a Modbus slave via RS485 using QModbusRTUSerialMaster. Under normal load conditions everything works fine, but if I put a high load on the GUI hence leading to delay in event loop processing I start to get invalid replies. After investigation it turned out that the retransmit timers get fired erroneously, overlapping the reply coming from the slave. The timeout is set to 500ms, but on this scope capture is visible that a second request is sent just 30ms after the first one, while the salve is in the process of replying:
I have applied this changeset https://codereview.qt-project.org/#/c/256482/ and it seems to fix the issue, I have noticed no timeout failures so far. Just sharing this in case someone else encounters the same issue.