delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2013/07/29/12:01:53

X-Recipient: archive-cygwin AT delorie DOT com
DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:message-id:date:from:mime-version:to:subject
:references:in-reply-to:content-type:content-transfer-encoding;
q=dns; s=default; b=odjsXsAtlxMKDN/X0z5EnOyao/V1nqJ8oNQm+glSa8V
vNe42OaCB+xOW1DPkDhrY/ULbvXZG9TJ+9CxU1sxDuMqadLoaXt/kWWr1X01/0EB
Y/sn9qyPiTnh1Aql3KKbyt31PVUYQbL1zTwwrwf9MK36BnmWLSt0+Qh2cRRXRoxw
=
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id
:list-unsubscribe:list-subscribe:list-archive:list-post
:list-help:sender:message-id:date:from:mime-version:to:subject
:references:in-reply-to:content-type:content-transfer-encoding;
s=default; bh=8+ekRMEviyel2ttf0KkN+GZ926E=; b=y0YoWeNLtkbO8hhc/
gVvaWYt0Kl1hLe17hmUDpK5koo/MyEVxxJkIvzTUS8YJkjdERvHqxQR724DB9gpW
Jyk/CMgbnvYvlCUcE9iiSu68PliMBH3SpQJUe1GDOZPyH4yOT3Rw5M7BCs0asx83
q5T0kj+MNP8nkERr/U/egpi1ls=
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
X-Spam-SWARE-Status: No, score=-1.2 required=5.0 tests=AWL,BAYES_05,KHOP_THREADED,RDNS_NONE,SPF_NEUTRAL autolearn=no version=3.3.1
Message-ID: <51F691D2.205@cs.utoronto.ca>
Date: Mon, 29 Jul 2013 12:01:22 -0400
From: Ryan Johnson <ryan DOT johnson AT cs DOT utoronto DOT ca>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20130620 Thunderbird/17.0.7
MIME-Version: 1.0
To: cygwin AT cygwin DOT com
Subject: gdb hangs on ^Z [was: Re: 64-bit gdb: invalid decimal " 0x22DBF0"]
References: <51F33E9D DOT 9030703 AT cs DOT utoronto DOT ca> <51F3A133 DOT 8090805 AT star DOT sr DOT bham DOT ac DOT uk> <20130729110626 DOT GB30069 AT calimero DOT vinschen DOT de>
In-Reply-To: <20130729110626.GB30069@calimero.vinschen.de>

On 29/07/2013 7:06 AM, Corinna Vinschen wrote:
> On Jul 27 11:30, Daniel Brown wrote:
>> I have also ran into this problem, in my case though I have managed
>> to reduce the issue down to an fgets call when reading a pipe.
>> The following code causes the issue for me if I try and debug it:
>>
>> #include <stdio.h>
>> #include <stdlib.h>
>>
>> int main(int argc, char** argv) {
>>      char out[100] = {0};
>>      FILE *pipe;
>>
>>      if ((pipe = popen("uname -r", "rt")) == NULL)
>>          fprintf(stderr,"Failed to execute popen command");
>>
>>      if(fgets(out, 100, pipe) == NULL)
>>          fprintf(stderr,"Failed to read popen buffer");
>>
>>      printf("%s\n", out);
>>
>>      pclose(pipe);
>>
>>      return (EXIT_SUCCESS);
>> }
>>
>> I compile with `gcc -g main.c` then `gdb a.exe` and type `run`, the
>> error `invalid decimal " 0x23DBF0"` then pops up.
>> I have tried the latest snapshot cygwin1.dll (1.7.23s(0.268/5/3))
>> and the error is still there.
> This is a problem in GDB, not in the Cygwin DLL.  My mistake.  I fetched
> the official 7.6 version of GDB since it already contained Cygwin x86_64
> support so I thought it's sufficient.  Unfortunately it doesn't handle
> special Cygwin strings in terms of Cygwin signal handling correctly.
>
> I'm just uploading a gdb-7.6.50 version build from current CVS which
> should fix this.
Confirmed that this problem is fixed [1]... however, my original STC 
still hangs because gdb somehow interferes with the choreography of 
SIGTSTP between victim and its owning shell.

With default signal handling (SIGTSTP stop print pass) gdb breaks in 
when the victim receives ^Z, but both gdb and the victim hang once gdb 
continues; gdb cannot be interrupted with ^C [2]. Killing gdb allows the 
victim to finish backgrounding itself, apparently none the worse for wear.

With handle SIGTSTP nostop noprint pass, gdb doesn't break in any more, 
but both gdb and the victim still hang on ^Z. This time, killing gdb 
also silently kills the app, with the shell reporting exit code 0 and no 
job completion notice (presumably because the victim didn't finish 
backgrounding itself before being killed).

Running under linux/gdb, the STC behaves as expected, breaking in after 
the shell reports that the victim has backgrounded. You'd want to nostop 
SIGTSTP, SIGTTIN and SIGCONT to keep the debugger from getting 
underfoot, though.

(changing the subject line to reflect the new issue, since it's probably 
not directly related to the original problem)

[1] BTW, did you intend for a gdb release announcement to go out? None 
came that I can see, though the mirrors seem to have picked it up.
[2] As usual, gdb only breaks in response to ^C if you invoke it 
directly from cmd.exe, but the above hang causes it to ignore ^C even then.

Ryan


--
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

- Raw text -


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