Occasionally if a test crashes or is interrupted by the user
at the wrong moment it could leave behind a stale UNIX
socket in /tmp/. This will then cause a subsequent test
run to fail spuriously with
tests/libqtest.c:70:init_socket: assertion failed (ret != -1): (-1 != -1)
if it happens to reuse the same PID.
Defend against this by deleting any stray stale socket before
trying to open the new ones for this test.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
This seems like an easy way to shut up this infrequent but irritating
error case...
tests/libqtest.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/tests/libqtest.c b/tests/libqtest.c
index a5c3d2b..99b1195 100644
--- a/tests/libqtest.c
+++ b/tests/libqtest.c
@@ -167,6 +167,14 @@ QTestState *qtest_init_without_qmp_handshake(const char *extra_args)
socket_path = g_strdup_printf("/tmp/qtest-%d.sock", getpid());
qmp_socket_path = g_strdup_printf("/tmp/qtest-%d.qmp", getpid());
+ /* It's possible that if an earlier test run crashed it might
+ * have left a stale unix socket lying around. Delete any
+ * stale old socket to avoid spurious test failures with
+ * tests/libqtest.c:70:init_socket: assertion failed (ret != -1): (-1 != -1)
+ */
+ unlink(socket_path);
+ unlink(qmp_socket_path);
+
sock = init_socket(socket_path);
qmpsock = init_socket(qmp_socket_path);
--
2.7.4
On 03/31/2017 09:36 AM, Peter Maydell wrote: > Occasionally if a test crashes or is interrupted by the user > at the wrong moment it could leave behind a stale UNIX > socket in /tmp/. This will then cause a subsequent test > run to fail spuriously with > tests/libqtest.c:70:init_socket: assertion failed (ret != -1): (-1 != -1) > if it happens to reuse the same PID. > > Defend against this by deleting any stray stale socket before > trying to open the new ones for this test. > > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> > --- > This seems like an easy way to shut up this infrequent but irritating > error case... > > tests/libqtest.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/tests/libqtest.c b/tests/libqtest.c > index a5c3d2b..99b1195 100644 > --- a/tests/libqtest.c > +++ b/tests/libqtest.c > @@ -167,6 +167,14 @@ QTestState *qtest_init_without_qmp_handshake(const char *extra_args) > socket_path = g_strdup_printf("/tmp/qtest-%d.sock", getpid()); > qmp_socket_path = g_strdup_printf("/tmp/qtest-%d.qmp", getpid()); > > + /* It's possible that if an earlier test run crashed it might > + * have left a stale unix socket lying around. Delete any > + * stale old socket to avoid spurious test failures with > + * tests/libqtest.c:70:init_socket: assertion failed (ret != -1): (-1 != -1) > + */ > + unlink(socket_path); > + unlink(qmp_socket_path); > + > sock = init_socket(socket_path); > qmpsock = init_socket(qmp_socket_path); > >
On 03/31/2017 07:36 AM, Peter Maydell wrote: > Occasionally if a test crashes or is interrupted by the user > at the wrong moment it could leave behind a stale UNIX > socket in /tmp/. This will then cause a subsequent test > run to fail spuriously with > tests/libqtest.c:70:init_socket: assertion failed (ret != -1): (-1 != -1) > if it happens to reuse the same PID. > > Defend against this by deleting any stray stale socket before > trying to open the new ones for this test. > > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> > --- > This seems like an easy way to shut up this infrequent but irritating > error case... There is a related failure in qemu-iotests that I hit yesterday: +mkfifo: cannot create fifo '/home/eblake/qemu/tests/qemu-iotests/scratch/qmp-out-3812_0': File exists that is probably also worth addressing, but that can be a separate patch. Reviewed-by: Eric Blake <eblake@redhat.com> -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
On Fri, Mar 31, 2017 at 01:36:41PM +0100, Peter Maydell wrote: > Occasionally if a test crashes or is interrupted by the user > at the wrong moment it could leave behind a stale UNIX > socket in /tmp/. This will then cause a subsequent test > run to fail spuriously with > tests/libqtest.c:70:init_socket: assertion failed (ret != -1): (-1 != -1) > if it happens to reuse the same PID. > > Defend against this by deleting any stray stale socket before > trying to open the new ones for this test. > > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> > --- > This seems like an easy way to shut up this infrequent but irritating > error case... > > tests/libqtest.c | 8 ++++++++ > 1 file changed, 8 insertions(+) Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
© 2016 - 2024 Red Hat, Inc.