On Mon, 3 Jan 2022, Christos Zoulas wrote:

Yes, in the end screen was at fault for setting CLOCAL in the pty which
prevented from SIGHUP from being sent. I fixed it.


I think the problem may be that in canonical mode, the slave goes to
sleep waiting for input (in tty.c:ttread()) and nothing wakes it up
when the master side is closed. The patch below seems to work, but,
please scrutinize it carefully as I've only tested it lightly and I'm
also operating without a license :)

---START PATCH---
--- sys/kern/tty_pty.c.orig     2021-10-11 04:12:12.543371554 +0000
+++ sys/kern/tty_pty.c  2022-01-04 11:08:51.163444059 +0000
@@ -637,6 +637,7 @@
        mutex_spin_enter(&tty_lock);
        CLR(tp->t_state, TS_CARR_ON);
        tp->t_oproc = NULL;          /* mark closed */
+       cv_broadcast(&tp->t_rawcv);      /* wake-up slave */
        mutex_spin_exit(&tty_lock);
        return 0;
 }
---END PATCH---

-RVP

Reply via email to