public inbox for cygwin@cygwin.com
 help / color / mirror / Atom feed
From: Jon Turney <jon.turney@dronecode.org.uk>
To: The Cygwin Mailing List <cygwin@cygwin.com>
Subject: Re: Can't debug bash with gdb 8.2.1-1
Date: Thu, 25 Jul 2019 12:12:00 -0000	[thread overview]
Message-ID: <a7d81f28-282f-3840-a1a2-724f654c4f85@dronecode.org.uk> (raw)
In-Reply-To: <cdda52b1-44a9-396d-25d6-4bdf38187f85@cornell.edu>

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

      reply	other threads:[~2019-07-25 12:12 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-22 14:59 Ken Brown
2019-07-23 13:52 ` Jon Turney
2019-07-23 15:42   ` Ken Brown
2019-07-23 18:02     ` Jon Turney
2019-07-24 12:33       ` Ken Brown
2019-07-24 14:32         ` Ken Brown
2019-07-24 14:42           ` Ken Brown
2019-07-25 12:12             ` Jon Turney [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a7d81f28-282f-3840-a1a2-724f654c4f85@dronecode.org.uk \
    --to=jon.turney@dronecode.org.uk \
    --cc=cygwin@cygwin.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).