diff --git a/src/sdl/i_system.c b/src/sdl/i_system.c
index c3b469bcac83fd28cede8993d3ab9a3c570e92ce..7d1405268539a778d31fc0eb68ed5d223f4924a7 100644
--- a/src/sdl/i_system.c
+++ b/src/sdl/i_system.c
@@ -2169,9 +2169,13 @@ void I_Sleep(void)
 #ifdef NEWSIGNALHANDLER
 static void I_Fork(void)
 {
+	int child;
 	int status;
 	int signum;
-	switch (fork())
+
+	child = fork();
+
+	switch (child)
 	{
 		case -1:
 			I_Error(
@@ -2184,6 +2188,7 @@ static void I_Fork(void)
 		default:
 			if (wait(&status) == -1)
 			{
+				kill(child, SIGKILL);
 				I_Error(
 						"Error setting up signal reporting: fork(): %s\n",
 						strerror(errno)