summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTakashi Yano <takashi.yano@nifty.ne.jp>2019-08-12 22:46:23 +0900
committerCorinna Vinschen <corinna@vinschen.de>2019-08-12 17:08:48 +0200
commit92e2c1ad9de2d140374bf789b2eb6142b3297120 (patch)
treec1607e835fde6ba0ded5d2277fdbba26305d2784
parent744b90c9963cac8dbe62d8970f145e53b927d4e6 (diff)
downloadcygnal-92e2c1ad9de2d140374bf789b2eb6142b3297120.tar.gz
cygnal-92e2c1ad9de2d140374bf789b2eb6142b3297120.tar.bz2
cygnal-92e2c1ad9de2d140374bf789b2eb6142b3297120.zip
Cygwin: console: Fix deadlock at calling fork().
- Calling fork() on console occasionally falls into deadlock. The reason is not clear, however, this patch fixes this problem anyway.
-rw-r--r--winsup/cygwin/fhandler_console.cc8
1 files changed, 6 insertions, 2 deletions
diff --git a/winsup/cygwin/fhandler_console.cc b/winsup/cygwin/fhandler_console.cc
index e3656a33a..df28c7f93 100644
--- a/winsup/cygwin/fhandler_console.cc
+++ b/winsup/cygwin/fhandler_console.cc
@@ -168,8 +168,12 @@ fhandler_console::set_unit ()
if (created)
con.owner = getpid ();
}
- if (!created && shared_console_info && kill (con.owner, 0) == -1)
- con.owner = getpid ();
+ if (!created && shared_console_info)
+ {
+ pinfo p (con.owner);
+ if (!p)
+ con.owner = getpid ();
+ }
dev ().parse (devset);
if (devset != FH_ERROR)