public inbox for cygwin@cygwin.com
 help / color / mirror / Atom feed
* gdb 7.3.50-2 crash
@ 2011-10-16 11:01 Ken Brown
  2011-10-27 12:11 ` Ken Brown
  0 siblings, 1 reply; 3+ messages in thread
From: Ken Brown @ 2011-10-16 11:01 UTC (permalink / raw)
  To: cygwin

gdb 7.3.50-2 crashes with a segfault if a file is loaded and the 
following two command lines are sent:

server interpreter mi "-file-list-exec-source-files"
server list

To reproduce, run `gdb t.exe' and then type in those two lines.  Here 
t.exe can be any executable, I think.  I tried several and got the crash 
every time.  Specifically, it happens with a standard "Hello, world!" 
program:

$ cat t.c
#include <stdio.h>
int main(void)
{
  printf("Hello World\n");
  return 0;
}

This crash explains the problem reported in

   http://cygwin.com/ml/cygwin/2011-09/msg00172.html

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: gdb 7.3.50-2 crash
  2011-10-16 11:01 gdb 7.3.50-2 crash Ken Brown
@ 2011-10-27 12:11 ` Ken Brown
  2011-10-27 19:55   ` Christopher Faylor
  0 siblings, 1 reply; 3+ messages in thread
From: Ken Brown @ 2011-10-27 12:11 UTC (permalink / raw)
  To: cygwin

[-- Attachment #1: Type: text/plain, Size: 823 bytes --]

On 10/16/2011 7:01 AM, Ken Brown wrote:
> gdb 7.3.50-2 crashes with a segfault if a file is loaded and the
> following two command lines are sent:
>
> server interpreter mi "-file-list-exec-source-files"
> server list

I don't know if it helps, but I've modified the STC from 
http://cygwin.com/ml/cygwin/2011-10/msg00472.html to apply to the 
present problem.  I had to uncomment the sleep (1) to get it to run 
properly on my Linux system.  I also made the STC run "gdb --annotate=3" 
even though the crash occurs with just "gdb", because that's how gdb is 
run by emacs in the situation that led to this bug report.

The STC assumes that you have hello.exe in the current directory.

$ cat > hello.c << EOF
#include <stdio.h>

int
main ()
{
  printf("Hello, world!\n");
  return 0;
}
EOF

$ gcc -g -o hello hello.c

Ken

[-- Attachment #2: gdbsegv.cc --]
[-- Type: text/plain, Size: 1452 bytes --]

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pty.h>
#include <string.h>
#include <sys/wait.h>

void get_output (int fd);

int
main (int argc, const char **argv) 
{
  int master;
  pid_t pid;

  if ((pid = forkpty (&master, NULL, NULL, NULL)) < 0)
    {
      perror ("forkpty");
      exit (1);
    }
  /* child */
  if (pid == 0) 
    {
      const char *av[100];
      int i = 0;
#ifdef STRACE_GDB
      av[i++] = "strace";
      av[i++] = "-o";
      av[i++] = "/tmp/strace.out";
#ifdef __CYGWIN__
      av[i++] = "--mask=all+paranoid";
#endif
#endif
      av[i++] = argv[1] ?: "gdb";
      fprintf (stderr, "*** using %s\n", av[0]);
      av[i++] = "--annotate=3";
      av[i++] = "hello.exe";
      av[i] = NULL;
      execvp (av[0], (char * const *) av);
      /* shouldn't get here */
      exit (1);
    }
  /* parent */
  const char *input[20];

  int i = 0;
  input[i++] = "server interpreter mi \"-file-list-exec-source-files\"\n";
  input[i++] = "server list\n";
  input[i++] = "q\n";
  input[i] = NULL;

  for (int i = 0; input[i]; ++i)
    {
      write (master, input[i], strlen (input[i]));
      sleep (1);
    }
  get_output (master);
  wait (NULL);
}

void
get_output (int fd)
{
  char buf[4096];

  while (1)
    {
      int nread = read (fd, buf, sizeof (buf));
      if (nread > 0)
	write (STDOUT_FILENO, buf, nread);
      else
	{
	  printf ("No more output.  nread %d\n", nread);
	  break;
	}
    }
}




[-- Attachment #3: Type: text/plain, Size: 218 bytes --]

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: gdb 7.3.50-2 crash
  2011-10-27 12:11 ` Ken Brown
@ 2011-10-27 19:55   ` Christopher Faylor
  0 siblings, 0 replies; 3+ messages in thread
From: Christopher Faylor @ 2011-10-27 19:55 UTC (permalink / raw)
  To: cygwin, Ken Brown

On Thu, Oct 27, 2011 at 08:11:39AM -0400, Ken Brown wrote:
>On 10/16/2011 7:01 AM, Ken Brown wrote:
>> gdb 7.3.50-2 crashes with a segfault if a file is loaded and the
>> following two command lines are sent:
>>
>> server interpreter mi "-file-list-exec-source-files"
>> server list
>
>I don't know if it helps, but I've modified the STC from 
>http://cygwin.com/ml/cygwin/2011-10/msg00472.html to apply to the 
>present problem.  I had to uncomment the sleep (1) to get it to run 
>properly on my Linux system.  I also made the STC run "gdb --annotate=3" 
>even though the crash occurs with just "gdb", because that's how gdb is 
>run by emacs in the situation that led to this bug report.
>
>The STC assumes that you have hello.exe in the current directory.

I haven't tried your new STC but I have confirmed that the crash
goes away with a newer version of gdb.  I'll roll out a new update
over the weekend.

cgf

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2011-10-27 19:55 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-10-16 11:01 gdb 7.3.50-2 crash Ken Brown
2011-10-27 12:11 ` Ken Brown
2011-10-27 19:55   ` Christopher Faylor

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).