Are you really polling the standard output of the sub-process 100,000 times per second on the chance that there is some output? Seems you should just be waiting for readyReadStdout() to be emitted and then read (a separate thread may not be needed).
This could be a deadlock caused by unsynchronised access from multiple threads. It could be a memory leak finally crippling the program after 30 minutes.
Bookmarks