From dcc2850a39c5fc317c199a0425856674dd1cc657 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20G=2E=20Aragoneses?= Date: Mon, 28 Oct 2013 21:55:21 +0100 Subject: [PATCH] gui-thread-check: use fflush() after printf() Using fflush() right away after printf() calls avoids the buffers to be written in an apparently complete-out-of-sync way from the point of view of the developer. This problem would specially occur when redirecting all output to a file this way: mono Foo.exe > out.txt 2>&1 Without this fix, all the output from gui-thread-check would appear at the end of the file, instead of in between the output generated by the program. Cherry-picked from https://github.com/slluis/gui-thread-check/commit/6988cd4cd2deb21d0a8006d63e1090996f18b92f --- gtk/gui-thread-check/profiler/gui-thread-check.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gtk/gui-thread-check/profiler/gui-thread-check.c b/gtk/gui-thread-check/profiler/gui-thread-check.c index 4ec8643bd..6c8acd53d 100644 --- a/gtk/gui-thread-check/profiler/gui-thread-check.c +++ b/gtk/gui-thread-check/profiler/gui-thread-check.c @@ -26,6 +26,7 @@ #include #include #include +#include extern pthread_t pthread_self (void); @@ -62,7 +63,8 @@ simple_method_enter (MonoProfiler *prof, MonoMethod *method) if (!guithread_set && strcmp (klass_name, "Application")==0 && strcmp (method_name, "Init")==0) { guithread_set = TRUE; guithread = current_thread_id; - printf ("*** GUI THREAD INITIALIZED: %u\n", guithread); + printf ("*** GUI THREAD INITIALIZED: %u\n", guithread); + fflush (NULL); return; } if (!guithread_set) { @@ -77,6 +79,7 @@ simple_method_enter (MonoProfiler *prof, MonoMethod *method) ) { printf ("*** GTK CALL NOT IN GUI THREAD: %s.%s\n", klass_name, method_name); mono_stack_walk_no_il (stack_walk_fn, NULL); + fflush (NULL); } } }