This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Can't debug bash with gdb 8.2.1-1


On 24/07/2019 15:42, Ken Brown wrote:
On 7/24/2019 10:32 AM, Ken Brown wrote:
On 7/24/2019 8:33 AM, Ken Brown wrote:
$ cat getpgrp_test.c
#include <unistd.h>
#include <stdio.h>
#include <errno.h>

int
main ()
{
      pid_t pid = getpid ();
      pid_t pgid = getpgid (0);
      printf ("getpid () = %d, getpgid (0) = %d, errno = %d\n", pid, pgid, errno);
}

$ gcc -o getpgrp_test -Wall -g -O0 getpgrp_test.c

$ ./getpgrp_test.exe
getpid () = 1424, getpgid (0) = 1424, errno = 0

$ gdb ./getpgrp_test.exe
GNU gdb (GDB) (Cygwin 8.2.1-1) 8.2.1
[...]
(gdb) r
Starting program: /home/kbrown/Documents/programming/misc_examples/getpgrp_test.exe
[...]
getpid () = 1427, getpgid (0) = -1, errno = 0
[...]
[Inferior 1 (process 23872) exited normally]

So getpgid (0) returns -1 without setting errno.  I think this means that
pinfo::init() didn't fail, but for some reason myself->pgid == -1.

I just ran the above gdb session under strace and found several lines like this:

      25 32828861 [main] gdb 1799 tcsetpgrp: 0 = tcsetpgrp(0, -1)

I haven't looked at the gdb code, but doesn't this mean that gdb is trying to
set pgrp to -1?  If so, why?  And shouldn't tcsetpgrp return -1 with EINVAL?

Well spotted.

I just looked at the gdb commit that Jon pointed to earlier in the thread.  It
adds calls like this:

    result = tcsetpgrp (0, getpgid (inf->pid));

It then checks for errors and takes appropriate action.  But tcsetpgrp returns
success.

So this all seems to boil down to the fact that Cygwin's tcsetpgrp() doesn't
check the validity of its second argument.

Great.  Thanks very much for looking into this.

I guess I need to look into gdb to see if it's trying to use -1 due to some other problem, or just expects that to be ignored.

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]