diff --git a/src/libs/utils/terminalprocess.cpp b/src/libs/utils/terminalprocess.cpp index 556ae5dc3c0..17a15adc4a1 100644 --- a/src/libs/utils/terminalprocess.cpp +++ b/src/libs/utils/terminalprocess.cpp @@ -483,29 +483,26 @@ void TerminalImpl::killProcess() void TerminalImpl::killStub() { + if (!isRunning()) + return; + #ifdef Q_OS_WIN - if (d->m_pid) { - TerminateProcess(d->m_pid->hProcess, (unsigned)-1); - WaitForSingleObject(d->m_pid->hProcess, INFINITE); - cleanupStub(); - } + TerminateProcess(d->m_pid->hProcess, (unsigned)-1); + WaitForSingleObject(d->m_pid->hProcess, INFINITE); + cleanupStub(); #else sendCommand('s'); stubServerShutdown(); + d->m_process.waitForFinished(); #endif + + emitFinished(-1, QProcess::CrashExit); } void TerminalImpl::stopProcess() { killProcess(); killStub(); - if (isRunning() && HostOsInfo::isAnyUnixHost()) { - d->m_process.terminate(); - if (!d->m_process.waitForFinished(1000) && d->m_process.state() == QProcess::Running) { - d->m_process.kill(); - d->m_process.waitForFinished(); - } - } } bool TerminalImpl::isRunning() const