From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from omta002.cacentral1.a.cloudfilter.net (omta002.cacentral1.a.cloudfilter.net [3.97.99.33]) by sourceware.org (Postfix) with ESMTPS id 398673858D39 for ; Tue, 19 Oct 2021 16:11:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 398673858D39 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=SystematicSw.ab.ca Authentication-Results: sourceware.org; spf=none smtp.mailfrom=systematicsw.ab.ca Received: from shw-obgw-4004a.ext.cloudfilter.net ([10.228.9.227]) by cmsmtp with ESMTP id clMwmlvszps7PcrhkmLSww; Tue, 19 Oct 2021 16:11:08 +0000 Received: from [192.168.1.105] ([68.147.0.90]) by cmsmtp with ESMTP id crhkmGp53a8XRcrhkmqQsC; Tue, 19 Oct 2021 16:11:08 +0000 X-Authority-Analysis: v=2.4 cv=Ov8sdwzt c=1 sm=1 tr=0 ts=616eee1c a=T+ovY1NZ+FAi/xYICV7Bgg==:117 a=T+ovY1NZ+FAi/xYICV7Bgg==:17 a=IkcTkHD0fZMA:10 a=uYT-Tk0qkVT609LjNaIA:9 a=QEXdDO2ut3YA:10 Reply-To: cygwin@cygwin.com Subject: Re: Hanging cygwin processes in Windows Server 2019 To: cygwin@cygwin.com References: <764795149.682120.1633022545890.ref@mail.yahoo.com> <764795149.682120.1633022545890@mail.yahoo.com> <552722739.4126571.1634558495795@mail.yahoo.com> Cc: "chris.hardison@yahoo.com" From: Brian Inglis Organization: Systematic Software Message-ID: Date: Tue, 19 Oct 2021 10:11:07 -0600 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 MIME-Version: 1.0 In-Reply-To: <552722739.4126571.1634558495795@mail.yahoo.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-CA Content-Transfer-Encoding: 7bit X-CMAE-Envelope: MS4xfFZhQAvEv6GXzrFy+R2KV7WuS/VxYqZczl0eWhGn++X6F5YuYKh5FeiKv9WU+svNLVtSnG5HbZfzIoGZsl/G53YfoweVEKmhlcTQQCOUEIDvZRtYEzw1 KquKsaB88cuTQb8+bTgsZOBWOCoYbKP2Q0gFy1GmCIlAnyKr8TpRerNYMaNiLoq40iBdKde3OUX/zldzqd9MPxvU0fr6ZHoC5jobhp0lN/ya5ut6jDI3rtKI X-Spam-Status: No, score=-1165.9 required=5.0 tests=BAYES_00, KAM_DMARC_STATUS, KAM_LAZY_DOMAIN_SECURITY, NICE_REPLY_A, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=no autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: cygwin@cygwin.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: General Cygwin discussions and problem reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Oct 2021 16:11:11 -0000 On 2021-10-18 06:01, chris.hardison wrote: > On Thursday, September 30, 2021, 01:26:37 PM EDT, chris.hardison wrote: >> My cygwin install looks good and things seem to work perfectly for some time (hours or days), then a cygwin process started by a windows process that is usually a child process of a windows service written in perl will hang and then most all other cygwin processes will hang or take a very long time to return. The simplest example is a call to \cygwin\bin\ps from powershell. That normally returns with sub-second response time. Once the problem occurs that call to \cygwin\bin\ps will often take several minutes to return. I've found that killing all cygwin processes will temporarily resolve the problem. >> I've read about redirecting NUL to stdin when making the call to cygwin processes from windows and that didn't seem to help. >> I've tried "set-processmitigation -name \cygwin\bin\ps.exe >> -disable ForceRelocateImages" with no real benefit. >> I've also tried "\cygwin\bin\dash -c /bin/rebaseall" on startup before the sshd service starts and that didn't seem to help. >> Any suggestions on how to prevent this problem will be greatly appreciated. > The problem seems to be that my cygwin processes that are always the child or grandchild of a windows service use a console device that is block buffered rather than character buffered. So using mintty to start those processes forces character buffered which solves the problem. I'm looking for cleaner way to force character buffered IO. Here's an example of the change: > From > chomp(@output = `/cygwin/bin/ps -W`);TO > chomp(@output = `/cygwin/bin/mintty.exe -w hide /bin/dash -c "/bin/ps -W > /tmp/${PID}.out"; sleep 1; type /cygwin/tmp/${PID}.out; del /cygwin/tmp/${PID}.out`); > Hopefully someone can suggest a simpler solution. Most Cygwin processes don't care about buffering, as they may be line or character buffered from the terminal but block buffered when used with pipe or file I/O. Try using stdbuf(1) instead of mintty to change buffering. You use it as a command prefix like nohup or time. Perl may also have ways of changing I/O buffering internally. -- Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada This email may be disturbing to some readers as it contains too much technical detail. Reader discretion is advised. [Data in binary units and prefixes, physical quantities in SI.]