From 5193c8cd2fcea1cc5da4a19e54773b81ffd98a64 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Tue, 11 Jul 2023 10:51:59 -0400 Subject: [PATCH] drivers/pty: Close "slave" TTYs when the "master" is closed. The old TTY driver did this, but it was not properly carried over into this new driver. Fixes the first part of #18488: the child bash process from the first session is properly closed, but the TTY state isn't reset and there can still be stale things left in its buffer, it appears. --- src/add-ons/kernel/drivers/pty/driver.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/add-ons/kernel/drivers/pty/driver.cpp b/src/add-ons/kernel/drivers/pty/driver.cpp index 7d98a8b109..b067632a0d 100644 --- a/src/add-ons/kernel/drivers/pty/driver.cpp +++ b/src/add-ons/kernel/drivers/pty/driver.cpp @@ -329,6 +329,12 @@ pty_close(void *_cookie) MutexLocker globalLocker(gGlobalTTYLock); + if (cookie->tty->is_master) { + // close all connected slave cookies first + while (tty_cookie *slave = cookie->other_tty->cookies.Head()) + gTTYModule->tty_close_cookie(slave); + } + gTTYModule->tty_close_cookie(cookie); return B_OK;