diff --git a/server/extcmd.c b/server/extcmd.c
index 67a2797..1fc93b2 100644
--- a/server/extcmd.c
+++ b/server/extcmd.c
@@ -91,6 +91,7 @@ _run_extcmd(uid_t uid, gid_t gid, const char *cmd, char *so_buf,
     FILE   *output;
     int     retval = EXTCMD_SUCCESS_ALL_OUTPUT;
     int     line_ctr = 0, found_str = 0;
+    int     es = 0;
 
     char   *argv_new[MAX_CMDLINE_ARGS]; /* for validation and/or execvpe() */
     int     argc_new=0;
@@ -162,7 +163,16 @@ _run_extcmd(uid_t uid, gid_t gid, const char *cmd, char *so_buf,
 
         /* don't use env
         */
-        execvpe(argv_new[0], argv_new, (char * const *)NULL);
+        es = execvpe(argv_new[0], argv_new, (char * const *)NULL);
+
+        if(es == -1)
+            log_msg(LOG_ERR, "run_extcmd(): execvpe() failed: %s", strerror(errno));
+
+        /* We only make it here if there was a problem with execvpe(),
+         * so exit() here either way to not leave another fwknopd process
+         * running after fork().
+        */
+        exit(es);
     }
     else if(pid == -1)
     {
