diff --git a/toys/pending/bootchartd.c b/toys/pending/bootchartd.c
index d903405..797ab7d 100644
--- a/toys/pending/bootchartd.c
+++ b/toys/pending/bootchartd.c
@@ -285,7 +285,7 @@ void bootchartd_main()
     parse_config_file("/etc/bootchartd.conf");
 
   memset(toybuf, 0, sizeof(toybuf));
-  if (!(lgr_pid = xfork())) {
+  if (!(lgr_pid = CFG_TOYBOX_FORK ? xfork() : XVFORK())) {
     char *tmp_dir = create_tmp_dir();
 
     sigatexit(generic_signal);
@@ -309,7 +309,7 @@ void bootchartd_main()
   if (bchartd_opt == 1 && toys.optargs[1]) { 
     pid_t prog_pid;
 
-    if (!(prog_pid = xfork())) xexec(toys.optargs+1);
+    if (!(prog_pid = CFG_TOYBOX_FORK ? xfork() : XVFORK())) xexec(toys.optargs+1);
     waitpid(prog_pid, NULL, 0);
     kill(lgr_pid, SIGUSR1);
   }
