Skip to content

gtestdbus: Flush stdout and stderr before forking a monitor process

Philip Withnall requested to merge pwithnall/glib:2322-fflush-test-dbus into master

This is a workaround for the fact that forking without execing is not easy to do correctly, and GTestDBus doesn’t do it correctly. However, GTestDBus is de-facto deprecated and so putting any more effort in is a waste.

This fixes an issue where a test would print duplicate output when outputting to a fully-buffered FD, such as a pipe. This is because the buffer is non-empty before the fork(), and ends up duplicated in the parent and child processes, both of which later flush the duplicated buffer contents.

Diagnosed and fix suggested by Simon McVittie.

Signed-off-by: Philip Withnall pwithnall@endlessos.org

Fixes: #2322 (closed)

Closes #2322 (closed)

Merge request reports