Index: uspace/lib/libc/generic/fibril_sync.c
===================================================================
--- uspace/lib/libc/generic/fibril_sync.c	(revision 26360f7216dd5f971430bcd57a1459a4cc0665fa)
+++ uspace/lib/libc/generic/fibril_sync.c	(revision 0ed2e0e07159e63bbe76debb88533c9b15580498)
@@ -198,4 +198,5 @@
 		tmp = fcv->waiters.next;
 		f = list_get_instance(tmp, fibril_t, link);
+		list_remove(&f->link);
 		fibril_add_ready((fid_t) f);
 		if (once)
Index: uspace/lib/libc/include/fibril_sync.h
===================================================================
--- uspace/lib/libc/include/fibril_sync.h	(revision 26360f7216dd5f971430bcd57a1459a4cc0665fa)
+++ uspace/lib/libc/include/fibril_sync.h	(revision 0ed2e0e07159e63bbe76debb88533c9b15580498)
@@ -75,4 +75,12 @@
 } fibril_condvar_t;
 
+#define FIBRIL_CONDVAR_INITIALIZE(name) \
+	fibril_condvar_t name = { \
+		.waiters = { \
+			.next = &name.waiters, \
+			.prev = &name.waiters, \
+		} \
+	}
+
 extern void fibril_mutex_initialize(fibril_mutex_t *);
 extern void fibril_mutex_lock(fibril_mutex_t *);
