From 6b8473a2e8e3fb8b2a716947b96459c389034c80 Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Fri, 30 Jun 2023 10:14:54 +0200 Subject: [PATCH] Terminal: Fix exit reporting in error cases Previously the finished signal was sent not sent soon enough for the Process to recognizes it correctly. Also, the process stub would exit prematurely in cases of crashes. The process stub should only return an error exit code if it did not show the "waiting for keypress" message. Fixes: QTCREATORBUG-29350 Change-Id: I86f7d75bacbdb5ee2b0009669926d94b6a75346a Reviewed-by: Cristian Adam --- src/libs/utils/terminalinterface.cpp | 4 +++- src/tools/process_stub/main.cpp | 6 ++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/libs/utils/terminalinterface.cpp b/src/libs/utils/terminalinterface.cpp index fc69451c9c0..204cd79d7a1 100644 --- a/src/libs/utils/terminalinterface.cpp +++ b/src/libs/utils/terminalinterface.cpp @@ -280,8 +280,10 @@ void TerminalInterface::sendCommand(char c) void TerminalInterface::killInferiorProcess() { sendCommand('k'); - if (d->stubSocket) + if (d->stubSocket) { d->stubSocket->waitForReadyRead(); + emitFinished(-1, QProcess::CrashExit); + } } void TerminalInterface::killStubProcess() diff --git a/src/tools/process_stub/main.cpp b/src/tools/process_stub/main.cpp index bfb6f6c3211..00312b833f6 100644 --- a/src/tools/process_stub/main.cpp +++ b/src/tools/process_stub/main.cpp @@ -185,7 +185,7 @@ void doExit(int exitCode) std::cout << commandLineParser.value("wait").toStdString() << std::endl; waitingForExitKeyPress = true; - onKeyPress([exitCode] { doExit(exitCode); }); + onKeyPress([] { doExit(0); }); } else { exit(exitCode); } @@ -206,9 +206,7 @@ void onInferiorFinished(int exitCode, QProcess::ExitStatus status) void onInferiorErrorOccurered(QProcess::ProcessError error) { - qCInfo(log) << "Inferior error: " << error << inferiorProcess.errorString(); - sendCrash(inferiorProcess.exitCode()); - doExit(1); + qCWarning(log) << "Inferior error: " << error << inferiorProcess.errorString(); } void onInferiorStarted()