qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Gustavo Romero <gustavo.romero@linaro.org>
To: Thomas Huth <thuth@redhat.com>,
	qemu-devel@nongnu.org, alex.bennee@linaro.org,
	berrange@redhat.com
Cc: qemu-arm@nongnu.org
Subject: Re: [PATCH v5 0/9] tests/functional: Adapt reverse_debugging to run w/o Avocado
Date: Fri, 3 Oct 2025 12:07:54 -0300	[thread overview]
Message-ID: <30fec60e-b0e8-408c-b577-e4875d8bb133@linaro.org> (raw)
In-Reply-To: <8d89f02e-9e5b-4cdd-9a54-d55bea8967bc@linaro.org>

Hi Thomas,

On 10/3/25 11:38, Gustavo Romero wrote:
> Hi Thomas,
> 
> On 10/3/25 10:30, Gustavo Romero wrote:
>> Hi Thomas,
>>
>> On 10/2/25 14:52, Thomas Huth wrote:
>>> On 02/10/2025 18.53, Thomas Huth wrote:
>>>> On 02/10/2025 04.04, Gustavo Romero wrote:
>>>>> The goal of this series is to remove Avocado as a dependency for running
>>>>> the reverse_debugging functional test.
>>>>>
>>>>> After several rounds of discussions about v1 and v2, and experiments
>>>>> done by Daniel and Thomas (thanks for all the experiments and comments
>>>>> so far), I've taken a new approach and moved away from using a runner
>>>>> for GDB. The changes, I believe, are much simpler now.
>>>>
>>>>   Hi Gustavo,
>>>>
>>>> unfortunately, this still seems to be broken on Fedora. After applying your series, I get:
>>>>
>>>> stderr:
>>>> Traceback (most recent call last):
>>>>    File "/home/thuth/devel/qemu/tests/functional/reverse_debugging.py", line 100, in reverse_debugging
>>>>      self.reverse_debugging_run(vm, port, gdb_arch, last_icount)
>>>>      ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>>>    File "/usr/lib64/python3.13/unittest/case.py", line 156, in skip_wrapper
>>>>      raise SkipTest(reason)
>>>> unittest.case.SkipTest: Missing env var(s): QEMU_TEST_GDB
>>>
>>> Looks like it's required to explicitly use the --gdb=... parameter of configure to make it work, and it does not work without that paramter? Could you please have a look whether it works without --gdb with the auto-detected gdb for you?
>>
>> Yes, it works without passing --gdb on Ubuntu. I'm checking it on Fedora.
>>
>> But at least have you got the test skipped properly (displayed on Meson as skipped) since QEMU_TEST_GDB is missing?
> 
> hmm actually, no it's not skipped correctly. The @skipIfMissingEnv() annotation is in the wrong method.
> 
> I've just sent a v6 with:
> 
> diff --git a/tests/functional/reverse_debugging.py b/tests/functional/reverse_debugging.py
> index f06996089a..2a2e51b912 100644
> --- a/tests/functional/reverse_debugging.py
> +++ b/tests/functional/reverse_debugging.py
> @@ -63,6 +63,7 @@ def vm_get_icount(vm):
>           return vm.qmp('query-replay')['return']['icount']
> 
>       @skipIfMissingImports("pygdbmi") # Required by GDB class
> +    @skipIfMissingEnv("QEMU_TEST_GDB")
>       def reverse_debugging(self, gdb_arch, shift=7, args=None):
>           from qemu_test import GDB
> 
> @@ -108,7 +109,6 @@ def reverse_debugging(self, gdb_arch, shift=7, args=None):
>               # skipTest(), etc.
>               raise
> 
> -    @skipIfMissingEnv("QEMU_TEST_GDB")
>       def reverse_debugging_run(self, vm, port, gdb_arch, last_icount):
>           logger = logging.getLogger('replay')
> 
> 
> Now, I have not idea why GDB is not detected in Fedora. I'm setting up a Fedora env. to try it.

I've just tried it on Fedora 42 and GDB is correctly detected:

$ ../configure --target-list=aarch64-softmmu --disable-docs
$ make -j check-functional-aarch64
   VENVPIP install -e /home/gromero/git/qemu/python/
/home/gromero/git/qemu/build/pyvenv/bin/python3 -B /home/gromero/git/qemu/python/scripts/mkvenv.py ensuregroup  --online /home/gromero/git/qemu/pythondeps.toml testdeps
mkvenv: checking for qemu
mkvenv: checking for pygdbmi>=0.11.0.0
mkvenv: installing qemu, pygdbmi==0.11.0.0
make[1]: Entering directory '/home/gromero/git/qemu/build'
[1/6] Generating qemu-version.h with a custom command (wrapped by meson to capture output)
[2/6] Compiling C object libqmp.a.p/monitor_qmp-cmds-control.c.o
[3/6] Compiling C object libsystem.a.p/system_vl.c.o
[4/6] Compiling C object qemu-img.p/qemu-img.c.o
[5/6] Linking target qemu-img
[6/6] Linking target qemu-system-aarch64
/home/gromero/git/qemu/build/pyvenv/bin/meson test  --no-rebuild -t 1 --setup thorough   --print-errorlogs  --suite func-aarch64  --suite func-aarch64-thorough
  1/29 qemu:func-thorough+func-aarch64-thorough+thorough / func-aarch64-rme_sbsaref                SKIP              0.22s   0 subtests passed
  2/29 qemu:func-thorough+func-aarch64-thorough+thorough / func-aarch64-rme_virt                   SKIP              0.25s   0 subtests passed
  3/29 qemu:func-thorough+func-aarch64-thorough+thorough / func-aarch64-virt_gpu                   SKIP              0.22s   0 subtests passed
  4/29 qemu:func-thorough+func-aarch64-thorough+thorough / func-aarch64-tuxrun                     SKIP              0.22s   0 subtests passed
  5/29 qemu:func-quick+func-aarch64 / func-aarch64-info_usernet                                    SKIP              0.29s   0 subtests passed
  6/29 qemu:func-quick+func-aarch64 / func-aarch64-empty_cpu_model                                 OK                0.32s   1 subtests passed
  7/29 qemu:func-thorough+func-aarch64-thorough+thorough / func-aarch64-smmu                       SKIP              0.38s   0 subtests passed
  8/29 qemu:func-quick+func-aarch64 / func-aarch64-version                                         OK                0.35s   1 subtests passed
  9/29 qemu:func-quick+func-aarch64 / func-aarch64-vmstate                                         OK                0.42s   1 subtests passed
10/29 qemu:func-thorough+func-aarch64-thorough+thorough / func-aarch64-multiprocess               SKIP              0.27s   0 subtests passed
11/29 qemu:func-quick+func-aarch64 / func-aarch64-vnc                                             OK                0.53s   3 subtests passed
12/29 qemu:func-thorough+func-aarch64-thorough+thorough / func-aarch64-replay                     SKIP              0.26s   0 subtests passed
13/29 qemu:func-thorough+func-aarch64-thorough+thorough / func-aarch64-raspi3                     OK                2.91s   1 subtests passed
14/29 qemu:func-quick+func-aarch64 / func-aarch64-migration                                       OK                3.60s   3 subtests passed
15/29 qemu:func-thorough+func-aarch64-thorough+thorough / func-aarch64-hotplug_pci                OK               12.90s   1 subtests passed
16/29 qemu:func-thorough+func-aarch64-thorough+thorough / func-aarch64-xlnx_versal                OK               27.11s   1 subtests passed
17/29 qemu:func-thorough+func-aarch64-thorough+thorough / func-aarch64-raspi4                     OK               35.83s   2 subtests passed
18/29 qemu:func-thorough+func-aarch64-thorough+thorough / func-aarch64-sbsaref                    OK               36.41s   1 subtests passed
19/29 qemu:func-thorough+func-aarch64-thorough+thorough / func-aarch64-reverse_debug              OK               36.98s   1 subtests passed   <===
20/29 qemu:func-thorough+func-aarch64-thorough+thorough / func-aarch64-device_passthrough         OK               41.88s   1 subtests passed
[...]


also:


gromero@gromero13:~/git/qemu/build$ ./pyvenv/bin/meson test --no-rebuild -t 1 --setup thorough  --suite func-thorough  func-aarch64-reverse_debug
1/1 qemu:func-thorough+func-aarch64-thorough+thorough / func-aarch64-reverse_debug        OK              16.68s   1 subtests passed

Ok:                 1
Expected Fail:      0
Fail:               0
Unexpected Pass:    0
Skipped:            0
Timeout:            0

Full log written to /home/gromero/git/qemu/build/meson-logs/testlog-thorough.txt
gromero@gromero13:~/git/qemu/build$

I have installed:


gromero@gromero13:~/git/qemu/build$ dnf info gdb
Updating and loading repositories:
Repositories loaded.
Installed packages
Name            : gdb
Epoch           : 0
Version         : 16.3
Release         : 1.fc42
Architecture    : x86_64
Installed size  : 455.3 KiB
Source          : gdb-16.3-1.fc42.src.rpm
 From repository : updates
Summary         : A GNU source-level debugger for C, C++, Fortran, Go and other languages
URL             : https://gnu.org/software/gdb/
License         : GPL-3.0-or-later AND BSD-3-Clause AND FSFAP AND LGPL-2.1-or-later AND GPL-2.0-or-later AND LGPL-2.0-or-later AND LicenseRef-Fedora-Public-Domain AND GFDL-1.3-or-later AND LGPL-2.0-or-later WITH
                 :  GCC-exception-2.0 AND GPL-3.0-or-later WITH GCC-exception-3.1 AND GPL-2.0-or-later WITH GNU-compiler-exception AND MIT
Description     : GDB, the GNU debugger, allows you to debug programs written in C, C++,
                 : Fortran, Go, and other languages, by executing them in a controlled
                 : fashion and printing their data.
                 :
                 : If you want to use GDB for development purposes, you should install
                 : the 'gdb' package which will install 'gdb-headless' and possibly other
                 : useful packages too.
Vendor          : Fedora Project
gromero@gromero13:~/git/qemu/build$


I'm wondering if the skipIfMissingEnv bug (fixed in v6) have acted as a red herring and
in fact no GDB was installed in your environment the first time you tried it without passing --gdb?


Cheers,
Gustavo

> Are you sure GDB is installed in your test env?
> 
> Do mind checking if:
> 
> gromero@gromero0:/mnt/git/qemu_$ gdb_bin=$(command -v "gdb-multiarch" || command -v "gdb")
> gromero@gromero0:/mnt/git/qemu_$ echo $gdb_bin
> /usr/bin/gdb
> 
> works in your env and if QEMU_TEST_GDB is in:
> 
> $ ./pyvenv/bin/meson test  --verbose --no-rebuild -t 1 --setup thorough  --suite func-thorough  func-aarch64-reverse_debug
> 
> output?
> 
> 
> Cheers,
> Gustavo
> 
> 



  reply	other threads:[~2025-10-03 15:09 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-02  2:04 [PATCH v5 0/9] tests/functional: Adapt reverse_debugging to run w/o Avocado Gustavo Romero
2025-10-02  2:04 ` [PATCH v5 1/9] tests/functional: Re-activate the check-venv target Gustavo Romero
2025-10-02 13:06   ` Daniel P. Berrangé
2025-10-02 16:08   ` Thomas Huth
2025-10-02  2:04 ` [PATCH v5 2/9] python: Install pygdbmi in meson's venv Gustavo Romero
2025-10-02 13:06   ` Daniel P. Berrangé
2025-10-14 17:39   ` John Snow
2025-10-14 18:21     ` Thomas Huth
2025-10-14 18:55       ` John Snow
2025-10-14 18:59         ` Thomas Huth
2025-10-14 19:05           ` John Snow
2025-10-14 19:19             ` Thomas Huth
2025-10-02  2:04 ` [PATCH v5 3/9] tests/functional: Provide GDB to the functional tests Gustavo Romero
2025-10-02 13:08   ` Daniel P. Berrangé
2025-10-02  2:04 ` [PATCH v5 4/9] tests/functional: Add GDB class Gustavo Romero
2025-10-02 13:11   ` Daniel P. Berrangé
2025-10-02 16:24     ` Alex Bennée
2025-10-02  2:04 ` [PATCH v5 5/9] tests/functional: replace avocado process with subprocess Gustavo Romero
2025-10-02  2:04 ` [PATCH v5 6/9] tests/functional: drop datadrainer class in reverse debugging Gustavo Romero
2025-10-02  2:04 ` [PATCH v5 7/9] tests/functional: Add decorator to skip test on missing env vars Gustavo Romero
2025-10-02 13:12   ` Daniel P. Berrangé
2025-10-02  2:04 ` [PATCH v5 8/9] tests/functional: Adapt reverse_debugging to run w/o Avocado Gustavo Romero
2025-10-02 13:13   ` Daniel P. Berrangé
2025-10-02  2:04 ` [PATCH v5 9/9] tests/functional: Adapt arches to reverse_debugging " Gustavo Romero
2025-10-02 13:14   ` Daniel P. Berrangé
2025-10-02 16:53 ` [PATCH v5 0/9] tests/functional: Adapt reverse_debugging to run " Thomas Huth
2025-10-02 17:52   ` Thomas Huth
2025-10-03 13:30     ` Gustavo Romero
2025-10-03 14:38       ` Gustavo Romero
2025-10-03 15:07         ` Gustavo Romero [this message]
2025-10-06  7:24           ` Thomas Huth
2025-10-06  9:58             ` Alex Bennée
2025-10-06 10:07               ` Thomas Huth

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=30fec60e-b0e8-408c-b577-e4875d8bb133@linaro.org \
    --to=gustavo.romero@linaro.org \
    --cc=alex.bennee@linaro.org \
    --cc=berrange@redhat.com \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=thuth@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 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 NNTP newsgroup(s).