diff --git a/src/plugins/projectexplorer/runcontrol.cpp b/src/plugins/projectexplorer/runcontrol.cpp index 0f24f238909..162ce90b45a 100644 --- a/src/plugins/projectexplorer/runcontrol.cpp +++ b/src/plugins/projectexplorer/runcontrol.cpp @@ -1320,7 +1320,11 @@ void SimpleTargetRunnerPrivate::stop() switch (m_state) { case Run: m_process.stop(); - m_process.waitForFinished(); + if (!m_process.waitForFinished(2000)) { // TODO: it may freeze on some devices + QTC_CHECK(false); // Shouldn't happen, just emergency handling + m_process.close(); + forwardDone(); + } break; case Inactive: break; diff --git a/src/plugins/remotelinux/linuxdevice.cpp b/src/plugins/remotelinux/linuxdevice.cpp index 84e0547acb0..9c8a884cc5d 100644 --- a/src/plugins/remotelinux/linuxdevice.cpp +++ b/src/plugins/remotelinux/linuxdevice.cpp @@ -492,8 +492,10 @@ bool SshProcessInterface::runInShell(const CommandLine &command, const QByteArra process.setCommand(cmd); process.setWriteData(data); process.start(); - QTC_CHECK(process.waitForFinished()); // otherwise we may start producing killers for killers - return process.exitCode() == 0; + bool isFinished = process.waitForFinished(2000); // TODO: it may freeze on some devices + // otherwise we may start producing killers for killers + QTC_CHECK(isFinished); + return isFinished; } void SshProcessInterface::start()