[newlib-cygwin] Cygwin: console Add comment for the recent change

Takashi Yano tyan0@sourceware.org
Mon Nov 11 12:45:35 GMT 2024


https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=87cd4f3fbd06217ce44c5da4e94fa6af59e8e39b

commit 87cd4f3fbd06217ce44c5da4e94fa6af59e8e39b
Author: Takashi Yano <takashi.yano@nifty.ne.jp>
Date:   Mon Nov 11 21:38:38 2024 +0900

    Cygwin: console Add comment for the recent change
    
    Fixes: 30d266947842 ("Cygwin: console: Fix clean up conditions in close()")
    Suggested-by: Brian Inglis <Brian.Inglis@SystematicSW.ab.ca>
    Signed-off-by: Takashi Yano <takashi.yano@nifty.ne.jp>

Diff:
---
 winsup/cygwin/fhandler/console.cc | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/winsup/cygwin/fhandler/console.cc b/winsup/cygwin/fhandler/console.cc
index 2651e49a6..0660ee305 100644
--- a/winsup/cygwin/fhandler/console.cc
+++ b/winsup/cygwin/fhandler/console.cc
@@ -1984,6 +1984,15 @@ fhandler_console::close ()
       NTSTATUS status;
       status = NtQueryObject (get_handle (), ObjectBasicInformation,
 			      &obi, sizeof obi, NULL);
+      /* If the process is not myself->cygstarted and is the console owner,
+	 the process is the last process on this console device. The console
+	 owner has two console handles, i.e. one is io_handle and the other
+	 is the dupplicated handle for cons_master_thread.
+	 If myself->cygstarted is false and the process is not console owner,
+	 the process is supposed to be started by the exec command in the
+	 owner shell. In this case, the owner process is still alive in the
+	 background and waiting for this process. So the handle count is
+	 three (two in the owner process, one is mine). */
       if (NT_SUCCESS (status)
 	  && obi.HandleCount == (con.owner == GetCurrentProcessId () ? 2 : 3))
 	{


More information about the Cygwin-cvs mailing list