From: Sergio Durigan Junior <sergiodj@redhat.com>
To: Alan Hayward <Alan.Hayward@arm.com>
Cc: "gdb-patches\@sourceware.org" <gdb-patches@sourceware.org>,
nd <nd@arm.com>
Subject: Regression on gdb.base/break-probes.exp - native-{,extended-}gdbserver (was: Re: [RFC/PATCH] Testsuite: set sysroot when using gdbserver)
Date: Fri, 12 Apr 2019 20:08:00 -0000 [thread overview]
Message-ID: <87h8b3f0mb.fsf@redhat.com> (raw)
In-Reply-To: <20190327164025.48105-1-alan.hayward@arm.com> (Alan Hayward's message of "Wed, 27 Mar 2019 16:40:30 +0000")
On Wednesday, March 27 2019, Alan Hayward wrote:
> When testing using native-gdbserver and native-extended-gdbserver, the sysroot
> is not set. This results in a warning from GDB and files are sent via the
> remote protocol, which can be slow.
>
> On Ubuntu 18.04 (unlike most distros) the debug versions of the standard
> libraries are included by default in /usr/lib/debug/
>
> Example log of a test on Ubuntu 18.04 AArch64:
>
> Listening on port 2346
> target remote localhost:2346
> Remote debugging using localhost:2346
> Reading /lib/ld-linux-aarch64.so.1 from remote target...
> warning: File transfers from remote targets can be slow. Use "set sysroot" to access files locally instead.
> Reading /lib/ld-linux-aarch64.so.1 from remote target...
> Reading symbols from target:/lib/ld-linux-aarch64.so.1...
> Reading /lib/ld-2.27.so from remote target...
> Reading /lib/.debug/ld-2.27.so from remote target...
> Reading /usr/lib/debug//lib/ld-2.27.so from remote target...
> Reading /usr/lib/debug/lib//ld-2.27.so from remote target...
> Reading target:/usr/lib/debug/lib//ld-2.27.so from remote target...
> (No debugging symbols found in target:/lib/ld-linux-aarch64.so.1)
> 0x0000ffffbf6d31c0 in ?? () from target:/lib/ld-linux-aarch64.so.1
> (gdb) continue
> Continuing.
> Reading /lib/aarch64-linux-gnu/libc.so.6 from remote target...
> Reading /lib/aarch64-linux-gnu/libc-2.27.so from remote target...
> Reading /lib/aarch64-linux-gnu/.debug/libc-2.27.so from remote target...
> Reading /usr/lib/debug//lib/aarch64-linux-gnu/libc-2.27.so from remote target...
> Reading /usr/lib/debug//lib/aarch64-linux-gnu/libc-2.27.so from remote target...
>
> These file reads are causing a complete native-gdbserver run on the AArch64
> buildbot slave to timeout after 2.5 hours. This is also causing the builds
> to back up on the slave.
>
> The solution is to ensure the sysroot is set to / immediately after connecting.
>
> This drastically reduces the time of a test. For example, gdb.base/sigall.exp
> drops from 23 seconds to 4 seconds.
> A full native-gdbserver run on the AArch64 slave now takes 8 minutes.
>
> However, I'm not sure if putting the sysroot into gdbserver_start will break
> other remote setups. In addition, I don't think gdb_test is the correct
> function to call within the library - for the mi tests this causes a timeout
> as it expect to use mi_gdb_test.
>
> gdb/testsuite/ChangeLog:
>
> 2019-03-27 Alan Hayward <alan.hayward@arm.com>
>
> * lib/gdbserver-support.exp (gdbserver_start): Set sysroot.
> ---
> gdb/testsuite/lib/gdbserver-support.exp | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/gdb/testsuite/lib/gdbserver-support.exp b/gdb/testsuite/lib/gdbserver-support.exp
> index dbd885aa22..065946eb8d 100644
> --- a/gdb/testsuite/lib/gdbserver-support.exp
> +++ b/gdb/testsuite/lib/gdbserver-support.exp
> @@ -336,6 +336,9 @@ proc gdbserver_start { options arguments } {
> break
> }
>
> + # Set sysroot to ensure files are read locally instead of via the remote protocol
> + gdb_test "set sysroot /" ""
> +
> return [list $protocol [$get_remote_address $debughost $portnum]]
> }
Hi Alan,
I have just noticed that two tests of gdb.base/break-probes.exp are
failing, most likely because of this patch.
These are the failures:
(gdb) PASS: gdb.base/break-probes.exp: ensure using probes
show sysroot
The current system root is "/".
(gdb) c
Continuing.
Stopped due to shared library event:
Inferior loaded /lib64/libdl.so.2
/lib64/libm.so.6
/lib64/libc.so.6
(gdb) c
Continuing.
Stopped due to shared library event (no libraries added or removed)
(gdb) c
Continuing.
Stopped due to shared library event:
Inferior loaded /build/gdb/testsuite/outputs/gdb.base/break-probes/break-probes-solib.so
(gdb) c
Continuing.
Stopped due to shared library event (no libraries added or removed)
(gdb) c
Continuing.
Stopped due to shared library event:
Inferior unloaded /build/gdb/testsuite/outputs/gdb.base/break-probes/break-probes-solib.so
(gdb) c
Continuing.
[Inferior 1 (process 20591) exited normally]
(gdb) FAIL: gdb.base/break-probes.exp: run til our library loads (the program exited)
call (int) foo(23)
No symbol "foo" in current context.
(gdb) FAIL: gdb.base/break-probes.exp: call (int) foo(23)
Remote debugging from host ::1, port 33292
Process /build/gdb/testsuite/outputs/gdb.base/break-probes/break-probes created; pid = 20591
Child exited with status 0
monitor exit
You can see the BuildBot build here:
https://gdb-build.sergiodj.net/builders/Fedora-x86_64-native-gdbserver-m64/builds/12335
The logs:
https://gdb-build.sergiodj.net/results/Fedora-x86_64-native-gdbserver-m64/c9/c92df149c29518f6e1d4a3174b3e29162fcd3ad6/
I'm in the middle of something else now, but let me know if you need
help with the investigation.
Thanks,
--
Sergio
GPG key ID: 237A 54B1 0287 28BF 00EF 31F4 D0EB 7628 65FC 5E36
Please send encrypted e-mail if possible
http://sergiodj.net/
prev parent reply other threads:[~2019-04-12 20:08 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20190327164025.48105-1-alan.hayward@arm.com>
2019-03-27 20:49 ` [RFC/PATCH] Testsuite: set sysroot when using gdbserver Kevin Buettner
2019-03-28 5:14 ` Kevin Buettner
2019-03-28 11:02 ` Alan Hayward
[not found] ` <dc692738-2f2b-2995-5a37-a813636d906d@redhat.com>
2019-03-28 12:50 ` Alan Hayward
2019-03-28 14:03 ` Pedro Alves
2019-04-12 20:08 ` Sergio Durigan Junior [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=87h8b3f0mb.fsf@redhat.com \
--to=sergiodj@redhat.com \
--cc=Alan.Hayward@arm.com \
--cc=gdb-patches@sourceware.org \
--cc=nd@arm.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