Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
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/


      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