This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: gdb hangs on ^Z [was: Re: 64-bit gdb: invalid decimal " 0x22DBF0"]
- From: Corinna Vinschen <corinna-cygwin at cygwin dot com>
- To: cygwin at cygwin dot com
- Date: Mon, 29 Jul 2013 21:11:18 +0200
- Subject: Re: 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> <51F691D2 dot 205 at cs dot utoronto dot ca>
- Reply-to: cygwin at cygwin dot com
On Jul 29 12:01, Ryan Johnson wrote:
> 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.
I'm not sure if ^Z can reliably work in the GDB scenario. That's
Chris' domain, but AFAICS, the fact that GDB calls the inferior
process with CreateProcess, the job control facility of the shell
will be broken.
> [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.
No. Next time I will.
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Maintainer cygwin AT cygwin DOT com
Red Hat
--
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