loolwsd/LOOLBroker.cpp | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-)
New commits: commit f3735f145f31ce1f706e3ba9fec5b2b9206c1ec0 Author: Henry Castro <hcas...@collabora.com> Date: Fri Jan 8 23:34:34 2016 -0400 loolwsd: force kills a child with abnormal state. diff --git a/loolwsd/LOOLBroker.cpp b/loolwsd/LOOLBroker.cpp index 5fdd28b..4718182 100644 --- a/loolwsd/LOOLBroker.cpp +++ b/loolwsd/LOOLBroker.cpp @@ -573,6 +573,24 @@ static int startupLibreOfficeKit(const bool sharePages, const int nLOKits, return pId; } + +static bool waitForTerminationChild(const Process::PID aPID) +{ + int status; + short nCntr = 3; + + while (nCntr-- > 0) + { + waitpid(aPID, &status, WUNTRACED | WNOHANG); + if (WIFEXITED(status)) + break; + + sleep(MAINTENANCE_INTERVAL); + } + + return nCntr; +} + // Broker process int main(int argc, char** argv) { @@ -862,8 +880,13 @@ int main(int argc, char** argv) for (auto i : _childProcesses) { Log::info("Requesting child process " + std::to_string(i.first) + " to terminate."); - Process::requestTermination(i.first); close(i.second); + Process::requestTermination(i.first); + if (!waitForTerminationChild(i.first)) + { + Log::info("Forcing a child process " + std::to_string(i.first) + " to terminate."); + Process::kill(i.first); + } } aPipe.join(); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits