From f8a3a4d04e70e1abb888f4cf035a906f6a6946ab Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Wed, 9 Nov 2022 19:29:41 +0100 Subject: [PATCH] SshProcessInterface: Don't use DeviceShell for control signals It looks like starting device shell is fragile in some circumstances. Fixes: QTCREATORBUG-28072 Change-Id: I1a51d1fb939bd42884a55e1492de808bee89219f Reviewed-by: hjk Reviewed-by: --- src/plugins/remotelinux/linuxdevice.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/plugins/remotelinux/linuxdevice.cpp b/src/plugins/remotelinux/linuxdevice.cpp index b278a17a2ef..84e0547acb0 100644 --- a/src/plugins/remotelinux/linuxdevice.cpp +++ b/src/plugins/remotelinux/linuxdevice.cpp @@ -483,7 +483,17 @@ qint64 SshProcessInterface::processId() const bool SshProcessInterface::runInShell(const CommandLine &command, const QByteArray &data) { - return d->m_devicePrivate->runInShell(command, data).exitCode == 0; + QtcProcess process; + CommandLine cmd = {d->m_device->filePath("/bin/sh"), {"-c"}}; + QString tmp; + ProcessArgs::addArg(&tmp, command.executable().path()); + ProcessArgs::addArgs(&tmp, command.arguments()); + cmd.addArg(tmp); + process.setCommand(cmd); + process.setWriteData(data); + process.start(); + QTC_CHECK(process.waitForFinished()); // otherwise we may start producing killers for killers + return process.exitCode() == 0; } void SshProcessInterface::start()