Index: uspace/libc/generic/io/vprintf.c
===================================================================
--- uspace/libc/generic/io/vprintf.c	(revision de33dab3d6e266b32bfcf983b683fc6d18b2ac72)
+++ uspace/libc/generic/io/vprintf.c	(revision 4365d108fca11d735aaf46f7098b7f1d5c2cbb52)
@@ -37,4 +37,8 @@
 #include <unistd.h>
 #include <io/printf_core.h>
+#include <futex.h>
+#include <async.h>
+
+static atomic_t printf_futex = FUTEX_INITIALIZER;
 
 static int vprintf_write(const char *str, size_t count, void *unused)
@@ -50,8 +54,20 @@
 int vprintf(const char *fmt, va_list ap)
 {
-	struct printf_spec ps = {(int(*)(void *, size_t, void *)) vprintf_write, NULL};
-	
+	struct printf_spec ps = {
+		(int (*)(void *, size_t, void *)) vprintf_write,
+		 NULL
+	};
+	/*
+	 * Prevent other threads to execute printf_core()
+	 */
+	futex_down(&printf_futex);
+	/*
+	 * Prevent other pseudo threads of the same thread
+	 * to execute printf_core()
+	 */
+	async_serialize_start();
 	int ret = printf_core(fmt, &ps, ap);
-	
+	async_serialize_end();
+	futex_up(&printf_futex);
 	return ret;
 }
