diff --git a/winsup/cygwin/fhandler_tty.cc b/winsup/cygwin/fhandler_tty.cc index 5efbf4328..34c879503 100644 --- a/winsup/cygwin/fhandler_tty.cc +++ b/winsup/cygwin/fhandler_tty.cc @@ -96,7 +96,7 @@ fhandler_pty_common::__acquire_output_mutex (const char *fn, int ln, { if (strace.active ()) strace.prntf (_STRACE_TERMIOS, fn, "(%d): pty output_mutex (%p): waiting %d ms", ln, output_mutex, ms); - if (0 && ms == INFINITE) + if (ms == INFINITE) ms = 100; DWORD res = WaitForSingleObject (output_mutex, ms); if (res == WAIT_OBJECT_0) @@ -145,9 +145,6 @@ fhandler_pty_common::__release_output_mutex (const char *fn, int ln) void fhandler_pty_master::doecho (const void *str, DWORD len) { - static char buf[128 * 1024]; - int buflen = process_slave_output (buf, sizeof (buf), false); - puts_readahead (buf, buflen); acquire_output_mutex (INFINITE); if (!WriteFile (to_master, str, len, &len, NULL)) termios_printf ("Write to %p failed, %E", to_master); diff --git a/winsup/cygwin/miscfuncs.cc b/winsup/cygwin/miscfuncs.cc index c2b405eed..d0748ea6c 100644 --- a/winsup/cygwin/miscfuncs.cc +++ b/winsup/cygwin/miscfuncs.cc @@ -251,8 +251,10 @@ yield () /* MSDN implies that SleepEx will force scheduling of other threads. Unlike SwitchToThread() the documentation does not mention other cpus so, presumably (hah!), this + using a lower priority will - stall this thread temporarily and cause another to run. */ - SleepEx (0L, false); + stall this thread temporarily and cause another to run. + Note: Don't use 0 timeout. This takes a lot of CPU if something + goes wrong. */ + SleepEx (1L, false); } SetThreadPriority (GetCurrentThread (), prio); }