www.delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin-developers/2001/09/16/01:08:58

Mailing-List: contact cygwin-developers-help AT sourceware DOT cygnus DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-developers-subscribe AT sources DOT redhat DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin-developers/>
List-Post: <mailto:cygwin-developers AT sources DOT redhat DOT com>
List-Help: <mailto:cygwin-developers-help AT sources DOT redhat DOT com>, <http://sources.redhat.com/ml/#faqs>
Sender: cygwin-developers-owner AT sources DOT redhat DOT com
Delivered-To: mailing list cygwin-developers AT sources DOT redhat DOT com
Message-ID: <009601c13e6d$c4466670$0200a8c0@lifelesswks>
From: "Robert Collins" <robert DOT collins AT itdomain DOT com DOT au>
To: <cygwin-developers AT cygwin DOT com>
References: <20010915234433 DOT A30407 AT redhat DOT com>
Subject: Re: possible explanation for make hang
Date: Sun, 16 Sep 2001 15:09:29 +1000
MIME-Version: 1.0
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 5.50.4133.2400
X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400
X-OriginalArrivalTime: 16 Sep 2001 04:56:10.0035 (UTC) FILETIME=[E6F56830:01C13E6B]

----- Original Message -----
From: "Christopher Faylor" <cgf AT redhat DOT com>
To: <cygwin-developers AT cygwin DOT com>
Sent: Sunday, September 16, 2001 1:44 PM
Subject: possible explanation for make hang


> I don't know precisely what make is doing but it is possible that
> if more than one program is attempting to read from the same pipe
> there will be a race that will cause cygwin to block in an
uninterruptible
> read.  So, if something like a SIGCHLD comes in while cygwin is
reading
> a pipe it won't be possible to deal with it.  I'm not aware of any
> way to interrupt a blocking read on a pipe so cygwin will hang until
> something shows up on the pipe.

Can we wait on the pipe and a signal event?
Ie
==
HANDLE handles[2];
handles[0] = signalevent;
handles[1] = pipe;
dword rc = WaitForMultipleObjects (2, handles, FALSE, INFINITE);
if ((rc - WAIT_OBJECT_0) == 1)
  ReadFile (pipe);
else
  handle_signal;
  /* the pipe may also have data, but can check again once the signal is
handled*/
==

> I just had this happen to me after 57 iterations of make in the winsup
> directory.  The stack traces of the affected makes seemed to indicate
> that this is what is happening.
>
> I *really* wish I knew of another way to deal with interrupting reads
> than the kludge that is now in use but I don't.
>
> I thought I had a promising lead a few weeks ago but the Windows API
> stood staunchly in my path, as usual.

What was that? Perhaps a brain storm could find something?

Rob

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019