delorie.com/archives/browse.cgi | search |
X-Recipient: | archive-cygwin AT delorie DOT com |
X-SWARE-Spam-Status: | No, hits=-1.3 required=5.0 tests=AWL,BAYES_00,RP_MATCHES_RCVD,SPF_NEUTRAL |
X-Spam-Check-By: | sourceware.org |
Message-ID: | <4E9EECDB.8020005@cornell.edu> |
Date: | Wed, 19 Oct 2011 11:29:31 -0400 |
From: | Ken Brown <kbrown AT cornell DOT edu> |
User-Agent: | Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20110929 Thunderbird/7.0.1 |
MIME-Version: | 1.0 |
To: | cygwin AT cygwin DOT com |
Subject: | Re: Question about Cygwin's select() |
References: | <4E9ED08B DOT 3080503 AT cornell DOT edu> <20111019144910 DOT GB16351 AT calimero DOT vinschen DOT de> |
In-Reply-To: | <20111019144910.GB16351@calimero.vinschen.de> |
X-IsSubscribed: | yes |
Mailing-List: | contact cygwin-help AT cygwin DOT com; run by ezmlm |
List-Id: | <cygwin.cygwin.com> |
List-Subscribe: | <mailto:cygwin-subscribe AT cygwin DOT com> |
List-Archive: | <http://sourceware.org/ml/cygwin/> |
List-Post: | <mailto:cygwin AT cygwin DOT com> |
List-Help: | <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs> |
Sender: | cygwin-owner AT cygwin DOT com |
Mail-Followup-To: | cygwin AT cygwin DOT com |
Delivered-To: | mailing list cygwin AT cygwin DOT com |
On 10/19/2011 10:49 AM, Corinna Vinschen wrote: > On Oct 19 09:28, Ken Brown wrote: >> I'm trying to debug an emacs problem, and I'm running into something >> I don't understand involving Cygwin's select. I'll try to make an >> STC if necessary, but I thought I'd start with a verbal description >> in case there's an easy answer. Here's the situation: >> >> emacs creates a subprocess running gdb and sends a bunch of commands >> to gdb without immediately reading the resulting output. emacs then >> goes into a loop in which it waits for keyboard input and >> periodically calls select to check for output from subprocesses. >> The first call to select has a 30 second timeout and *always* fails >> with EINTR. As a result, emacs doesn't read the output from gdb >> right away and doesn't properly initialize the gdb buffer. >> Subsequent calls to select sometimes succeed and sometimes fail. >> When I'm running emacs under gdb and stepping through it, the buffer >> eventually gets initialized. When I'm running emacs outside of gdb, >> the buffer doesn't get initialized until I press Return. >> >> I have a simple workaround for this, but I'd like to be sure there >> isn't some underlying bug that I'm masking with the workaround. So >> my question is this: Is there some reason that I should expect that >> first call to select to consistently fail with EINTR, or might this >> indicate a bug? >> >> I realize that it might not be possible to answer the question based >> on the information I've provided, but I thought it was worth a try. > > Some details are missing like the objects used to communicate with GDB. > Does Emacs use a pseudo tty or a pipe? Is that with Cygwin from CVS or > with 1.7.9? And what's your workaround? The EINTR sounds weird. A > testcase would be most helpful. Sorry for the missing details. Emacs uses a pseudo tty. I'm currently using the latest Cygwin snapshot, but I'm pretty sure I saw the same behavior with 1.7.9. I'll recheck that. My workaround is to force emacs to check for process output earlier in the initialization phase. For reasons I don't understand, the select call used at that point always succeeds. I think you've answered my basic question by saying that the EINTR sounds weird. I'll try to make a testcase. Ken -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |