Author: Pavel Labath Date: 2021-12-07T14:19:44+01:00 New Revision: d4083a296ac828440604574e7a9fac70ede96d66
URL: https://github.com/llvm/llvm-project/commit/d4083a296ac828440604574e7a9fac70ede96d66 DIFF: https://github.com/llvm/llvm-project/commit/d4083a296ac828440604574e7a9fac70ede96d66.diff LOG: [lldb] Fix flakyness in TestQemuLaunch.test_stdio_redirect The test was flaky because it was trying to read from the (redirected) stdout file before the data was been flushed to it. This would not be a problem for a "normal" debug session, but since here the emulator and the target binary coexist in the same process (and this is true both for real qemu and our fake implementation), there is a window of time between the stub returning an exit packet (which is the event that the test is waiting for) and the process really exiting (which is when the normal flushing happens). This patch adds an explicit flush to work around this. Theoretically, it's possible that real code could run into this issue as well, but such a use case is not very likely. If we wanted to fix this for real, we could add some code which waits for the host process to terminate (in addition to receiving the termination packet), but this is somewhat complicated by the fact that this code lives in the gdb-remote process plugin. Added: Modified: lldb/test/API/qemu/qemu.py Removed: ################################################################################ diff --git a/lldb/test/API/qemu/qemu.py b/lldb/test/API/qemu/qemu.py index eca85f8ac99b9..4b94c7689657e 100755 --- a/lldb/test/API/qemu/qemu.py +++ b/lldb/test/API/qemu/qemu.py @@ -35,8 +35,10 @@ def cont(self): json.dump(self._state, f) elif action == "stdout": sys.stdout.write(data) + sys.stdout.flush() elif action == "stderr": sys.stderr.write(data) + sys.stderr.flush() elif action == "stdin": self._state[data] = sys.stdin.readline() else: _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits