From d10095ed2079397bc4b3143cb25cb383dd2b4e57 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Thu, 10 Sep 2015 16:54:50 -0700 Subject: [PATCH] make sure AC PID is valid before acting on process --- .../src/AssignmentClientMonitor.cpp | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/assignment-client/src/AssignmentClientMonitor.cpp b/assignment-client/src/AssignmentClientMonitor.cpp index 5bb31c8c6f..b9ed44891c 100644 --- a/assignment-client/src/AssignmentClientMonitor.cpp +++ b/assignment-client/src/AssignmentClientMonitor.cpp @@ -95,8 +95,10 @@ void AssignmentClientMonitor::stopChildProcesses() { // ask child processes to terminate foreach(QProcess* childProcess, _childProcesses) { - qDebug() << "Attempting to terminate child process" << childProcess->processId(); - childProcess->terminate(); + if (childProcess->processId() > 0) { + qDebug() << "Attempting to terminate child process" << childProcess->processId(); + childProcess->terminate(); + } } simultaneousWaitOnChildren(WAIT_FOR_CHILD_MSECS); @@ -104,8 +106,10 @@ void AssignmentClientMonitor::stopChildProcesses() { if (_childProcesses.size() > 0) { // ask even more firmly foreach(QProcess* childProcess, _childProcesses) { - qDebug() << "Attempting to kill child process" << childProcess->processId(); - childProcess->kill(); + if (childProcess->processId() > 0) { + qDebug() << "Attempting to kill child process" << childProcess->processId(); + childProcess->kill(); + } } simultaneousWaitOnChildren(WAIT_FOR_CHILD_MSECS); @@ -155,12 +159,14 @@ void AssignmentClientMonitor::spawnChildClient() { assignmentClient->setProcessChannelMode(QProcess::ForwardedChannels); assignmentClient->start(QCoreApplication::applicationFilePath(), _childArguments); - - // make sure we hear that this process has finished when it does - connect(assignmentClient, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(childProcessFinished())); - - qDebug() << "Spawned a child client with PID" << assignmentClient->pid(); - _childProcesses.insert(assignmentClient->processId(), assignmentClient); + + if (assignmentClient->processId() > 0) { + // make sure we hear that this process has finished when it does + connect(assignmentClient, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(childProcessFinished())); + + qDebug() << "Spawned a child client with PID" << assignmentClient->processId(); + _childProcesses.insert(assignmentClient->processId(), assignmentClient); + } } void AssignmentClientMonitor::checkSpares() {