profiler: Flush stdout before printing

Apparently redirecting stderr to the same pipe as stdout does not
guarantee that the data will not be mangled together.

Flushing stdout before the profiler data is printed should ensure that
it does not end up in the middle of some RPM path.

Signed-off-by: Lubomír Sedlář <>
Lubomír Sedlář 1 year ago committed by lsedlar
parent 146b88e1e9
commit c7121f9378

@ -69,6 +69,11 @@ class Profiler(object):
def print_results(cls, stream=sys.stdout):
# Ensure all data that was printed to stdout was already flushed. If
# the caller is redirecting stderr to stdout, and there's buffered
# data, we may end up in a situation where the stderr output printed
# below ends up mixed with the stdout lines.
print("Profiling results:", file=stream)
results = cls._data.items()
results = sorted(results, key=lambda x: x[1]["time"], reverse=True)