public inbox for gdb-prs@sourceware.org
help / color / mirror / Atom feed
From: "cristian.lupascu at nxp dot com" <sourceware-bugzilla@sourceware.org>
To: gdb-prs@sourceware.org
Subject: [Bug mi/28711] New: gdb closes when displaying structs with long field names in eclipse
Date: Fri, 17 Dec 2021 13:07:56 +0000	[thread overview]
Message-ID: <bug-28711-4717@http.sourceware.org/bugzilla/> (raw)

https://sourceware.org/bugzilla/show_bug.cgi?id=28711

            Bug ID: 28711
           Summary: gdb closes when displaying structs with long field
                    names in eclipse
           Product: gdb
           Version: HEAD
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: mi
          Assignee: unassigned at sourceware dot org
          Reporter: cristian.lupascu at nxp dot com
  Target Milestone: ---

Created attachment 13862
  --> https://sourceware.org/bugzilla/attachment.cgi?id=13862&action=edit
testcase and traces

Requirements for reproducing:
1) Eclipse (Version: 2021-12 (4.22.0)) with C/C++ plugin (C/C++ Development
Tools       10.4.1.202109150103     org.eclipse.cdt.feature.group   Eclipse
CDT).
I have setup eclipse to use the nightly GDB version (GNU gdb (GDB)
12.0.50.20211217-git), but the bug still occurs.

2) OS: Linux (Linux vm 5.11.0-43-generic #47~20.04.2-Ubuntu SMP Mon Dec 13
11:06:56 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux). If you use the provided test
case, the bug can be reproduced on both physical and virtual machines.


Steps to reproduce:
1) Create a C project in eclipse and add test.c to it (from the attachment).
The file contains a simple testcase that defines a struct with 2000 fields with
increasing name lengths up to 2000 characters.

2) Build and debug. After initiating the debug session the program should be
stopped at main(). Mouse over the variable "var" to display it OR open the
Variables view in eclipse and expand the struct.

3) The debug session unexpectedly ends. GDB has exited with code 0.


Analysis:
1) Note that eclipse starts GDB with
"/home/cristi/Downloads/gdb-12.0.50.20211217/gdb/gdb --interpreter mi2 --nx -q
--interpreter console -ex new-ui mi /dev/pts/0 -ex set pagination off -ex show
version". Eclipse uses "new-ui mi /dev/pts/0" only on Linux. This is why this
bug is not reproducible on Windows or Mac.

2) Using "sudo strace -s 5000 -p $(pidof gdb)" reveals the issue. I've included
the full output in the attachment. The crucial part is the following lines:

```
read(9, "70-var-info-path-expression var1.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
1024) = 64
read(9, "\n71-var-info-path-expression
var1.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n", 1024) = 67
lseek(9, -66, SEEK_CUR)                 = -1 ESPIPE (Illegal seek)
lseek(9, -66, SEEK_CUR)                 = -1 ESPIPE (Illegal seek)
lseek(9, -66, SEEK_CUR)                 = -1 ESPIPE (Illegal seek)
```

GDB doesn't receive the full command in the first read, then it attempts to
lseek() back to the first "\n" from the second read(). The lseek() fails with
ESPIPE and soon after GDB exits.

3) File descriptor 9 is "/dev/pts/0", the communication terminal between IDE
and GDB, so lseek() can't be used on it.
lrwx------ 1 cristi cristi 64 dec 17 14:49 9 -> /dev/pts/0


Additional info:
On a phyisical machine, this issue is not noticeable in a practical scenario.
You would need a field name with a length of 1000 characters in order to
reproduce it.
However, this issue can easily happen on a VM in a realistic scenario. As you
can see above, a struct field with a name less that 64 characters could easily
reproduce the issue.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

             reply	other threads:[~2021-12-17 13:07 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-17 13:07 cristian.lupascu at nxp dot com [this message]
2021-12-17 16:53 ` [Bug mi/28711] " aburgess at redhat dot com
2021-12-17 16:55 ` aburgess at redhat dot com
2021-12-18 11:39 ` aburgess at redhat dot com
2021-12-20 18:44 ` aburgess at redhat dot com
2021-12-24 17:03 ` fweimer at redhat dot com
2021-12-26 19:06 ` tromey at sourceware dot org
2021-12-27 10:15   ` Andrew Burgess
2021-12-27 10:15 ` aburgess at redhat dot com
2022-01-17 16:43 ` aburgess at redhat dot com
2022-02-07 10:25 ` cvs-commit at gcc dot gnu.org
2022-02-08 10:16 ` aburgess at redhat dot com
2022-02-09 19:48 ` cristian.lupascu at nxp dot com
2022-02-09 23:42 ` tromey at sourceware dot org
2022-10-31 16:48 ` jonah at kichwacoders dot com
2022-10-31 16:54 ` jonah at kichwacoders dot com

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=bug-28711-4717@http.sourceware.org/bugzilla/ \
    --to=sourceware-bugzilla@sourceware.org \
    --cc=gdb-prs@sourceware.org \
    /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).