X-Spam-Check-By: sourceware.org Date: Mon, 2 Apr 2007 23:03:54 -0400 From: Bob Rossi To: cygwin AT cygwin DOT com Subject: Re: SIGTSTP and select Message-ID: <20070403030354.GH24160@cox.net> Mail-Followup-To: cygwin AT cygwin DOT com References: <20070403000723 DOT GG24160 AT cox DOT net> <20070403003753 DOT GA11244 AT ednor DOT casa DOT cgf DOT cx> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20070403003753.GA11244@ednor.casa.cgf.cx> User-Agent: Mutt/1.5.12-2006-07-14 Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , 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 Mon, Apr 02, 2007 at 08:37:53PM -0400, Christopher Faylor wrote: > On Mon, Apr 02, 2007 at 08:07:23PM -0400, Bob Rossi wrote: > >I'm not exactly sure what has changed since the last release to cause > >this issue. However, here it is. > > > >When ctrl-z is typed, CGDB receives a SIGTSTP on both linux and cygwin. > >When CGDB is at the select loop and this happens on linux select returns > >-1 and errno is set to EINTR. My code simple does a 'continue' when this > >happens and the select loop is reentered. All works well. On cygwin, > >select does not return with -1. (I didn't check the return value but I > >can, I just compare to -1 in an if statement). In fact, select also > >detects that input is ready on stdin. This causes CGDB to get to a read > >system call (which is non blocking) and the read system call fails with > >errno set to EAGAIN. This causes CGDB to exit. > > > >The main loop looks something like this, > > if (select (max + 1, &rset, NULL, NULL, NULL) == -1) > > { > > if (errno == EINTR) > > continue; > > .. > > } > > > > if (FD_ISSET (STDIN_FILENO, &rset)) { > > handle_stdin > > } > > > >So, my question is, is there a bug with select on cygwin? Is select > >working properly and I should handle the read call differently? Why does > >it act differently than linux? > > You say that something changed between different releases but you don't > mention what those releases are. Is this releases of Cygwin? If so, > what releases? I'm sorry, it's late for me, and my sentence was very poorly phrased. cgdb-0.6.3 seems to not have this problem. svn trunk, which is going to become cgdb-0.6.4, does have this problem. > If this is as easy to demonstrate as you say, then a simple test case > is definitely called for. OK, I will try. I could also try doing a binary search between cgdb-0.6.3 and svn trunk. I guess I was wondering if this was known issue. I will let you know what my results are. Bob Rossi -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/