From: Kevin Buettner <kevinb@redhat.com>
To: Tom de Vries <tdevries@suse.de>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH][gdb/testsuite] Add gdb.opt/break-on-_exit.exp
Date: Tue, 9 Nov 2021 09:35:17 -0700 [thread overview]
Message-ID: <20211109093517.2d6f07d3@f35-m3> (raw)
In-Reply-To: <33a30d8d-247e-fba8-c9f1-b8ff0bd001b2@suse.de>
On Thu, 4 Nov 2021 12:20:14 +0100
Tom de Vries <tdevries@suse.de> wrote:
> [ was: Re: [PATCH][gdb/testsuite] Work around skip_prologue problems in
> gdb.threads/process-dies-while-detaching.exp ]
>
> On 11/2/21 6:13 PM, Kevin Buettner wrote:
> > On Tue, 2 Nov 2021 12:38:26 +0100
> > Tom de Vries via Gdb-patches <gdb-patches@sourceware.org> wrote:
> >
> >> On 10/29/21 9:24 PM, Tom de Vries via Gdb-patches wrote:
> >>> Hi,
> >>>
> >>> On powerpc64le-linux, I run into:
> >>> ...
> >>> [Inferior 1 (process 5156) exited normally]^M
> >>> (gdb) FAIL: gdb.threads/process-dies-while-detaching.exp: single-process: \
> >>> detach: detach: continue to breakpoint: _exit (the program exited)
> >>> ...
> >>>
> >>> What happens is the following:
> >>> - a breakpoint is set on _exit,
> >>> - a continue is issued
> >>> - the continue is supposed to hit the breakpoint, but instead
> >>> the program exits.
> >>>
> >>> I traced this down to the breakpoint on _exit being set too far from function
> >>> entry. This is caused by the skip_prologue function (in rs6000-tdep.c)
> >>> optimistically ignoring insns it doesn't recognize. In particular, it walks
> >>> past the system call instruction "sc" which initiates the actual exit.
> >>>
> >>> While this needs fixing,
> >>
> >> Filed here: https://sourceware.org/bugzilla/show_bug.cgi?id=28527 .
> >>
> >> Submitted patch here:
> >> https://sourceware.org/pipermail/gdb-patches/2021-November/183016.html .
> >>
> >> Thanks,
> >> - Tom
> >>
> >>> we don't want to be testing this behaviour in this
> >>> test-case.
> >
> > Since you've fixed the problem in skip_prologue(), I'd prefer that this
> > testsuite patch not go in.
>
> One possible objection would be that otherwise we no longer excercise
> the problem, so here's a test-case for that.
>
> Any comments?
I've been trying (and failing) to reproduce this by hand on Fedora 35
ppc64le. Here's what I'm doing...
[kev@f35-ppc64le-1 tmp]$ tail -9 break-on-_exit.c
#include <unistd.h>
int
main (void)
{
_exit (0);
return 0;
}
[kev@f35-ppc64le-1 tmp]$ gcc -o break-on-_exit break-on-_exit.c
[kev@f35-ppc64le-1 tmp]$ gdb --readnever break-on-_exit
GNU gdb (GDB) Fedora 11.1-2.fc35
Copyright (C) 2021 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "ppc64le-redhat-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from break-on-_exit...
(No debugging symbols found in break-on-_exit)
(gdb) start
Temporary breakpoint 1 at 0x10000708
Starting program: /mesquite2/tmp/break-on-_exit
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Temporary breakpoint 1, 0x0000000010000708 in main ()
(gdb) b _exit
Breakpoint 2 at 0x7ffff7decc1c (2 locations)
(gdb) info breakpoints
Num Type Disp Enb Address What
2 breakpoint keep y <MULTIPLE>
2.1 y 0x00007ffff7decc1c <_exit+60>
2.2 y 0x00007ffff7fc9970 <_exit+64>
(gdb) info shared
From To Syms Read Shared Object Library
0x00007ffff7f91080 0x00007ffff7fcc224 Yes (*) /lib64/ld64.so.2
0x00007ffff7d00a80 0x00007ffff7eaebbc Yes (*) /lib64/libc.so.6
(*): Shared library is missing debugging information.
(gdb) c
Continuing.
Breakpoint 2, 0x00007ffff7decc1c in _exit () from /lib64/libc.so.6
(gdb) x/20i _exit
0x7ffff7decbe0 <_exit>: addis r2,r12,21
0x7ffff7decbe4 <_exit+4>: addi r2,r2,-23776
0x7ffff7decbe8 <_exit+8>: mflr r0
0x7ffff7decbec <_exit+12>: nop
0x7ffff7decbf0 <_exit+16>: std r29,-24(r1)
0x7ffff7decbf4 <_exit+20>: std r31,-8(r1)
0x7ffff7decbf8 <_exit+24>: ld r9,-29160(r2)
0x7ffff7decbfc <_exit+28>: mr r31,r3
0x7ffff7decc00 <_exit+32>: std r30,-16(r1)
0x7ffff7decc04 <_exit+36>: add r29,r9,r13
0x7ffff7decc08 <_exit+40>: ld r9,-28776(r13)
0x7ffff7decc0c <_exit+44>: li r30,-4096
0x7ffff7decc10 <_exit+48>: mr r3,r31
0x7ffff7decc14 <_exit+52>: andis. r9,r9,16
0x7ffff7decc18 <_exit+56>: std r0,16(r1)
=> 0x7ffff7decc1c <_exit+60>: li r0,234
0x7ffff7decc20 <_exit+64>: beq 0x7ffff7decc74 <_exit+148>
0x7ffff7decc24 <_exit+68>: nop
0x7ffff7decc28 <_exit+72>: nop
0x7ffff7decc2c <_exit+76>: ori r2,r2,0
(gdb)
I'm guessing that _exit looks different in your environment?
Kevin
next prev parent reply other threads:[~2021-11-09 16:35 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-29 19:24 [PATCH][gdb/testsuite] Work around skip_prologue problems in gdb.threads/process-dies-while-detaching.exp Tom de Vries
2021-11-02 11:38 ` Tom de Vries
2021-11-02 17:13 ` Kevin Buettner
2021-11-04 11:20 ` [PATCH][gdb/testsuite] Add gdb.opt/break-on-_exit.exp Tom de Vries
2021-11-09 16:35 ` Kevin Buettner [this message]
2021-11-09 16:58 ` Tom de Vries
2021-11-09 17:29 ` Kevin Buettner
2021-11-10 10:57 ` [PATCH][gdb/testsuite] Add gdb.arch/ppc64-break-on-_exit.exp Tom de Vries
2021-11-10 23:50 ` Kevin Buettner
2021-11-11 9:51 ` Tom de Vries
2021-11-10 11:56 ` [PATCH][gdb/testsuite] Add gdb.opt/break-on-_exit.exp Tom de Vries
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=20211109093517.2d6f07d3@f35-m3 \
--to=kevinb@redhat.com \
--cc=gdb-patches@sourceware.org \
--cc=tdevries@suse.de \
/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).