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
prev parent 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).