From 8a8f32699b71957b9421020794f4608f1ee2369d Mon Sep 17 00:00:00 2001 From: Marin Doetterer Date: Thu, 13 Aug 2026 18:56:55 +0200 Subject: [PATCH] fix(nshterm): went out of stack fix(mavlink_shell): no echo of commands --- src/modules/mavlink/mavlink_shell.cpp | 11 +++++++++-- src/systemcmds/nshterm/CMakeLists.txt | 1 + 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/modules/mavlink/mavlink_shell.cpp b/src/modules/mavlink/mavlink_shell.cpp index 723c5357811..e211d7b94cc 100644 --- a/src/modules/mavlink/mavlink_shell.cpp +++ b/src/modules/mavlink/mavlink_shell.cpp @@ -70,6 +70,10 @@ MavlinkShell::~MavlinkShell() if (_from_shell_fd >= 0) { close(_from_shell_fd); } + + if (_shell_fds[1] >= 0) { + close(_shell_fds[1]); + } } int MavlinkShell::start() @@ -170,9 +174,8 @@ int MavlinkShell::start() #endif - //close unused pipe fd's + //close unused pipe fd's; _shell_fds[1] is kept open, write() reuses it to echo input close(_shell_fds[0]); - close(_shell_fds[1]); #ifdef __PX4_NUTTX sched_unlock(); @@ -214,6 +217,10 @@ int MavlinkShell::shell_start_thread(int argc, char *argv[]) size_t MavlinkShell::write(uint8_t *buffer, size_t len) { + if (::write(_shell_fds[1], buffer, len) < 0) { + PX4_WARN("echo failed"); + } + return ::write(_to_shell_fd, buffer, len); } diff --git a/src/systemcmds/nshterm/CMakeLists.txt b/src/systemcmds/nshterm/CMakeLists.txt index 757ade30630..08963fe09ed 100644 --- a/src/systemcmds/nshterm/CMakeLists.txt +++ b/src/systemcmds/nshterm/CMakeLists.txt @@ -34,6 +34,7 @@ px4_add_module( MODULE systemcmds__nshterm MAIN nshterm PRIORITY "SCHED_PRIORITY_DEFAULT-30" + STACK_MAIN 4096 COMPILE_FLAGS SRCS nshterm.cpp