From 1e73024653d962b769387dd4c9ff544b6c8b7cc9 Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Tue, 2 Aug 2016 14:20:40 -0700 Subject: [PATCH] Have init kill the process group. killProcessGroup actually works on cgroups. Kill the POSIX process group ourselves. Bug: http://b/29751426 Change-Id: I1a2808488510f4262811b6407bcd0948ad23bc60 --- init/service.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/init/service.cpp b/init/service.cpp index 44d9d8c77..32aafd61b 100644 --- a/init/service.cpp +++ b/init/service.cpp @@ -197,11 +197,15 @@ void Service::NotifyStateChange(const std::string& new_state) const { } void Service::KillProcessGroup(int signal) { - LOG(VERBOSE) << "Sending signal " << signal - << " to service '" << name_ - << "' (pid " << pid_ << ") process group...\n", - kill(pid_, signal); - killProcessGroup(uid_, pid_, signal); + LOG(INFO) << "Sending signal " << signal + << " to service '" << name_ + << "' (pid " << pid_ << ") process group..."; + if (killProcessGroup(uid_, pid_, signal) == -1) { + PLOG(ERROR) << "killProcessGroup(" << uid_ << ", " << pid_ << ", " << signal << ") failed"; + } + if (kill(-pid_, signal) == -1) { + PLOG(ERROR) << "kill(" << pid_ << ", " << signal << ") failed"; + } } void Service::CreateSockets(const std::string& context) {