On 30/04/2021 15:02, Max Reitz wrote:
On 14.04.21 19:03, Emanuele Giuseppe Esposito wrote:
As with gdbserver, valgrind delays the test execution, so
the default QMP socket timeout timeout too soon.

I’m curious: The default timeouts should be long enough for slow systems, too, though (e.g. heavily-loaded CI systems).  I would expect that valgrind is used on developer systems where there is more leeway, so the timeouts should still work.

As said in patch 5, I will check again which timeout is essential to avoid and which not.

Emanuele

But in practice, thinking about that doesn’t matter.  If valgrind leads to a timeout being hit, that wouldn’t be nice.  OTOH, if you run valgrind to debug a test/qemu, you don’t particularly care about the timeouts anyway.

So in principle, this patch sounds good to me, it’s just that it’s based on patch 5, which I don’t fully agree with.

Max

Signed-off-by: Emanuele Giuseppe Esposito <eespo...@redhat.com>
---
  python/qemu/machine.py        | 2 +-
  tests/qemu-iotests/iotests.py | 4 ++--
  2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/python/qemu/machine.py b/python/qemu/machine.py
index d6142271c2..dce96e1858 100644
--- a/python/qemu/machine.py
+++ b/python/qemu/machine.py
@@ -410,7 +410,7 @@ def _launch(self) -> None:
                                         shell=False,
                                         close_fds=False)
-        if 'gdbserver' in self._wrapper:
+        if 'gdbserver' in self._wrapper or 'valgrind' in self._wrapper:
              self._qmp_timer = None
          self._post_launch()
diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
index a2e8604674..94597433fa 100644
--- a/tests/qemu-iotests/iotests.py
+++ b/tests/qemu-iotests/iotests.py
@@ -489,7 +489,7 @@ def log(msg: Msg,
  class Timeout:
      def __init__(self, seconds, errmsg="Timeout"):
-        if qemu_gdb:
+        if qemu_gdb or qemu_valgrind:
              self.seconds = 3000
          else:
              self.seconds = seconds
@@ -700,7 +700,7 @@ def qmp_to_opts(self, obj):
          return ','.join(output_list)
      def get_qmp_events(self, wait: bool = False) -> List[QMPMessage]:
-        if qemu_gdb:
+        if qemu_gdb or qemu_valgrind:
              wait = 0.0
          return super().get_qmp_events(wait=wait)




Reply via email to