Mailing-List: contact cygwin-developers-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-developers-owner AT sources DOT redhat DOT com Delivered-To: mailing list cygwin-developers AT sources DOT redhat DOT com Date: 8 Nov 2001 10:55:42 -0500 Message-ID: <20011108155542.19905.qmail@lizard.curl.com> From: Jonathan Kamens To: cygwin-developers AT cygwin DOT com Subject: Debugging problem in peek_pipe in select.cc I'm trying to debug why "make -j2" continues to hang for us occasionally even after cgf's recent fix to the code in this area. After deploying a cygwin1.dll with his fix, I ran two builds in a row which both hung. I didn't get much useful information out of them, so I set things up to be able to debug better in case of future hangs, and then started running builds. I ran a whole bunch of builds over several days and none of them hung. Finally, one of them hung, and then one of my coworkers killed and restarted it before I could debug it :-). Shortly after that, I finally got another build to hang, and I'm looking at that one now. Here's the current roadblock preventing me from understanding what's going on.... I attached to a hung process. The top of its stack trace in thread 1 looks like this: #0 0x77f67a5b in ?? () #1 0x61053b08 in peek_pipe (s=0x24aeee4, ignra=0, guard_mutex=0x1dc) at /u/jik/cygwin-cvs/src/winsup/cygwin/select.cc:453 #2 0x61053eba in fhandler_pipe::ready_for_read (this=0x61544920, fd=6, howlong=4294967295, ignra=0) at /u/jik/cygwin-cvs/src/winsup/cygwin/select.cc:512 #3 0x61062b97 in _read (fd=6, ptr=0x24aeff2, len=1) at /u/jik/cygwin-cvs/src/winsup/cygwin/syscalls.cc:315 #4 0x6108cbce in read (fd=6, buf=0x24aeff2, cnt=1) at /u/jik/cygwin-cvs/src/newlib/libc/syscalls/sysread.c:15 Line 453 of select.cc is a call to PeekNamedPipe. According to the MSDN documentation for PeekNamedPipe, it never hangs. So, thinking that frame 0 must be the PeekNamedPipe invocation, I typed "frame 0" and then "finish" in a "gdb -nw" window (running inside an ssh session to the Windows servers), and now it's hung. How can that be? I don't get it. ^C has no effect at this point, so I can't get get to stop the process and tell me where it is now. Any suggestions? jik