diff --git a/lib/base/process.cpp b/lib/base/process.cpp
index 03d217ce8..94ee94d95 100644
--- a/lib/base/process.cpp
+++ b/lib/base/process.cpp
@@ -34,6 +34,7 @@
 #ifndef _WIN32
 #	include <execvpe.h>
 #	include <poll.h>
+#	include <string.h>
 
 #	ifndef __APPLE__
 extern char **environ;
@@ -209,10 +210,12 @@ static Value ProcessKillImpl(struct msghdr *msgh, const Dictionary::Ptr& request
 	pid_t pid = request->Get("pid");
 	int signum = request->Get("signum");
 
-	int rc = kill(pid, signum);
+	errno = 0;
+	kill(pid, signum);
+	int error = errno;
 
 	Dictionary::Ptr response = new Dictionary();
-	response->Set("rc", rc);
+	response->Set("errno", error);
 
 	return response;
 }
@@ -452,7 +455,7 @@ send_message:
 	String jresponse = String(buf, buf + rc);
 
 	Dictionary::Ptr response = JsonDecode(jresponse);
-	return response->Get("rc");
+	return response->Get("errno");
 }
 
 static int ProcessWaitPID(pid_t pid, int *status)
@@ -1020,7 +1023,11 @@ bool Process::DoEvents(void)
 #ifdef _WIN32
 			TerminateProcess(m_Process, 1);
 #else /* _WIN32 */
-			ProcessKill(-m_Process, SIGKILL);
+			int error = ProcessKill(-m_Process, SIGKILL);
+			if (error)
+				Log(LogWarning, "Process")
+				    << "Couldn't kill the process group " << m_PID << " (" << PrettyPrintArguments(m_Arguments)
+				    << "): [errno " << error << "] " << strerror(error);
 #endif /* _WIN32 */
 
 			is_timeout = true;