diff --git a/dom0/init.d/qubes_core b/dom0/init.d/qubes_core
index 9e8d6783..870da372 100755
--- a/dom0/init.d/qubes_core
+++ b/dom0/init.d/qubes_core
@@ -33,7 +33,7 @@ start()
     /usr/lib/qubes/qmemman_daemon.py
     MEM_CHANGE_THRESHOLD_KB=30000
     MEMINFO_DELAY_USEC=100000
-    /usr/lib/qubes/meminfo-writer $MEM_CHANGE_THRESHOLD_KB $MEMINFO_DELAY_USEC &
+    /usr/lib/qubes/meminfo-writer $MEM_CHANGE_THRESHOLD_KB $MEMINFO_DELAY_USEC
 
     # Hide mounted devices from qubes-block list (at first udev run, only / is mounted)
     for dev in `xenstore-list /local/domain/0/qubes-block-devices`; do
diff --git a/misc/meminfo-writer.c b/misc/meminfo-writer.c
index c9e10594..f3563b14 100644
--- a/misc/meminfo-writer.c
+++ b/misc/meminfo-writer.c
@@ -154,6 +154,17 @@ int main(int argc, char **argv)
 		perror("xs_domain_open");
 		exit(1);
 	}
+	if (argc == 3) {
+		/* if not waiting for signal, fork after first info written to xenstore */
+		n = pread(fd, buf, sizeof(buf), 0);
+		buf[n] = 0;
+		meminfo_data = parse(buf);
+		if (meminfo_data)
+			send_to_qmemman(xs, meminfo_data);
+		if (fork() > 0)
+			exit(0);
+	}
+
 	for (;;) {
 		n = pread(fd, buf, sizeof(buf), 0);
 		buf[n] = 0;