From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Nicholas Piggin <npiggin@gmail.com>
Cc: "Thomas Huth" <thuth@redhat.com>, "John Snow" <jsnow@redhat.com>,
"Ani Sinha" <anisinha@redhat.com>,
"Wainer dos Santos Moschetta" <wainersm@redhat.com>,
"Beraldo Leal" <bleal@redhat.com>,
"Cleber Rosa" <crosa@redhat.com>,
"Pavel Dovgalyuk" <pavel.dovgaluk@ispras.ru>,
"Paolo Bonzini" <pbonzini@redhat.com>,
qemu-ppc@nongnu.org, qemu-devel@nongnu.org,
"Alex Bennée" <alex.bennee@linaro.org>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>
Subject: Re: [PATCH] tests/avocado/reverse_debugging: Disable the ppc64 tests by default
Date: Thu, 16 Nov 2023 09:00:07 +0000 [thread overview]
Message-ID: <ZVXaF5rYLC1vY8wZ@redhat.com> (raw)
In-Reply-To: <CWZU7DEIX9E4.26PTZ0GK1ZAUP@wheely>
On Thu, Nov 16, 2023 at 11:15:25AM +1000, Nicholas Piggin wrote:
> On Thu Nov 16, 2023 at 3:22 AM AEST, Daniel P. Berrangé wrote:
> > On Wed, Nov 15, 2023 at 01:14:53PM +0000, Daniel P. Berrangé wrote:
> > > On Wed, Nov 15, 2023 at 07:23:01AM +0100, Thomas Huth wrote:
> > > > On 15/11/2023 02.15, Nicholas Piggin wrote:
> > > > > On Wed Nov 15, 2023 at 4:29 AM AEST, Thomas Huth wrote:
> > > > > > On 14/11/2023 17.37, Philippe Mathieu-Daudé wrote:
> > > > > > > On 14/11/23 17:31, Thomas Huth wrote:
> > > > > > > > The tests seem currently to be broken. Disable them by default
> > > > > > > > until someone fixes them.
> > > > > > > >
> > > > > > > > Signed-off-by: Thomas Huth <thuth@redhat.com>
> > > > > > > > ---
> > > > > > > > tests/avocado/reverse_debugging.py | 7 ++++---
> > > > > > > > 1 file changed, 4 insertions(+), 3 deletions(-)
> > > > > > >
> > > > > > > Similarly, I suspect https://gitlab.com/qemu-project/qemu/-/issues/1961
> > > > > > > which has a fix ready:
> > > > > > > https://lore.kernel.org/qemu-devel/20231110170831.185001-1-richard.henderson@linaro.org/
> > > > > > >
> > > > > > > Maybe wait the fix gets in first?
> > > > > >
> > > > > > No, I applied Richard's patch, but the problem persists. Does this test
> > > > > > still work for you?
> > > > >
> > > > > I bisected it to 1d4796cd008373 ("python/machine: use socketpair() for
> > > > > console connections"),
> > > >
> > > > Maybe John (who wrote that commit) can help?
> > >
> > > I find it hard to believe this commit is a direct root cause of the
> > > problem since all it does is change the QEMU startup sequence so that
> > > instead of QEMU listening for a monitor connection, it is given a
> > > pre-opened monitor connection.
> > >
> > > At the very most that should affect the startup timing a little.
> > >
> > > I notice all the reverse debugging tests have a skip on gitlab
> > > with a comment:
> > >
> > > # unidentified gitlab timeout problem
> > >
> > > this makes be suspicious that John's patch has merely made this
> > > (henceforth undiagnosed) timeout more likely to ocurr.
> >
> > After an absolutely horrendous hours long debugging session I think
> > I figured out the problem. The QEMU process is blocking in
> >
> > qemu_chr_write_buffer
> >
> > spinning in the loop on EAGAIN.
>
> Great work.
>
> Why does this make the gdb socket give an empty response? Something
> just times out?
There's no empty response - avocado is sending SIGTERM to the
test because no response ever arrived after 10 seconds
> > @@ -357,6 +360,10 @@ def _pre_launch(self) -> None:
> >
> > if self._console_set:
> > self._cons_sock_pair = socket.socketpair()
> > + self._cons_sock_pair[0].setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, 1024*1024);
> > + self._cons_sock_pair[0].setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 1024*1024);
> > + self._cons_sock_pair[1].setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, 1024*1024);
> > + self._cons_sock_pair[1].setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 1024*1024);
> > os.set_inheritable(self._cons_sock_pair[0].fileno(), True)
> >
> > # NOTE: Make sure any opened resources are *definitely* freed in
>
> So perhaps ppc64 fails just because it prints more to the console in early
> boot than other targets?
Yes, that's exactly it - the ppc firmware is very verbose, so is enough
to tip it over the limit.
> > The Machine class doesn't know if anything will ever use the console,
> > so as is the change is unsafe.
> >
> > The original goal of John's change was to guarantee we capture early
> > boot messages as some test need that.
> >
> > I think we need to be able to have a flag to say whether the caller needs
> > an "early console" facility, and only use the pre-opened FD passing for
> > that case. Tests we need early console will have to ask for that guarantee
> > explicitly.
>
> The below patch makes this test work. Maybe as a quick fix it is
> better than disabling the test.
>
> I guess we still have a problem if a test invokes vm.launch()
> directly without subsequently waiting for a console pattern or
> doing something with the console as you say. Your suggesstion is
> add something like vm.launch(console=True) ?
>
> Thanks,
> Nick
> ---
>
> diff --git a/tests/avocado/reverse_debugging.py b/tests/avocado/reverse_debugging.py
> index fc47874eda..128d85bc0e 100644
> --- a/tests/avocado/reverse_debugging.py
> +++ b/tests/avocado/reverse_debugging.py
> @@ -12,6 +12,7 @@
>
> from avocado import skipIf
> from avocado_qemu import BUILD_DIR
> +from avocado.utils import datadrainer
> from avocado.utils import gdb
> from avocado.utils import process
> from avocado.utils.network.ports import find_free_port
> @@ -52,6 +53,10 @@ def run_vm(self, record, shift, args, replay_path, image_path, port):
> if args:
> vm.add_args(*args)
> vm.launch()
> + console_drainer = datadrainer.LineLogger(vm.console_socket.fileno(),
> + logger=self.log.getChild('console'),
> + stop_check=(lambda : not vm.is_running()))
> + console_drainer.start()
> return vm
>
> @staticmethod
Yes, thus should do the trick.
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
next prev parent reply other threads:[~2023-11-16 9:00 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-14 16:31 [PATCH] tests/avocado/reverse_debugging: Disable the ppc64 tests by default Thomas Huth
2023-11-14 16:35 ` Philippe Mathieu-Daudé
2023-11-14 16:37 ` Philippe Mathieu-Daudé
2023-11-14 18:29 ` Thomas Huth
2023-11-15 1:15 ` Nicholas Piggin
2023-11-15 6:23 ` Thomas Huth
2023-11-15 13:14 ` Daniel P. Berrangé
2023-11-15 17:22 ` Daniel P. Berrangé
2023-11-16 1:15 ` Nicholas Piggin
2023-11-16 3:55 ` Ani Sinha
2023-11-16 7:14 ` Nicholas Piggin
2023-11-16 8:55 ` Daniel P. Berrangé
2023-11-16 11:17 ` Ani Sinha
2023-11-16 11:31 ` Daniel P. Berrangé
2023-11-16 7:09 ` Thomas Huth
2023-11-16 9:45 ` Nicholas Piggin
2023-11-16 9:00 ` Daniel P. Berrangé [this message]
2023-11-16 3:50 ` Ani Sinha
2023-11-20 19:18 ` John Snow
2023-11-23 2:04 ` Nicholas Piggin
2023-11-23 10:52 ` Peter Maydell
2024-01-08 23:52 ` John Snow
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=ZVXaF5rYLC1vY8wZ@redhat.com \
--to=berrange@redhat.com \
--cc=alex.bennee@linaro.org \
--cc=anisinha@redhat.com \
--cc=bleal@redhat.com \
--cc=crosa@redhat.com \
--cc=jsnow@redhat.com \
--cc=npiggin@gmail.com \
--cc=pavel.dovgaluk@ispras.ru \
--cc=pbonzini@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=thuth@redhat.com \
--cc=wainersm@redhat.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.