From: Christopher Johannimloh <C.Johannimloh@beckhoff.com>
In our CI environment we install and purge all packages we use during
a single test. During testing of libvirtd we observed intermittent hangs
during apt purge of the libvirt packages.
After investigation I found out that the hang is caused by a deadlock
in nodeStateShutdownWait() which joins the udev thread while holding
the lock of the udevEventData object.
The udev thread needs the same lock to make progress and exit, so if the
shutdown thread wins the race for the lock the join can never complete
and the shutdown thread will later be killed by the 30s timeout [1].
[1] https://gitlab.com/libvirt/libvirt/-/blob/364977b94a776230037aa159be55bb95f2a33399/src/rpc/virnetdaemon.c#L118
Fixes: e89d39f5b8f30f0b3284ed2bd71cee1a8a3d707d
Signed-off-by: Christopher Johannimloh <C.Johannimloh@beckhoff.com>
---
src/node_device/node_device_udev.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_device_udev.c
index 104433fb88..28c8f00361 100644
--- a/src/node_device/node_device_udev.c
+++ b/src/node_device/node_device_udev.c
@@ -2482,10 +2482,8 @@ nodeStateShutdownWait(void)
if (!priv)
return 0;
- VIR_WITH_OBJECT_LOCK_GUARD(priv) {
- if (priv->udevThread)
- virThreadJoin(priv->udevThread);
- }
+ if (priv->udevThread)
+ virThreadJoin(priv->udevThread);
if (priv->workerPool)
virThreadPoolDrain(priv->workerPool);
--
2.47.3
This email contains confidential information. If you have received it in error, you must not read, use, copy or pass on this e-mail or its attachments.
If you have received the e-mail in error, please inform me immediately by reply e-mail and then delete this e-mail from your system. Thank you
Diese E-Mail enthält vertrauliche Informationen. Sollten Sie sie irrtümlich erhalten haben, dürfen Sie diese E-Mail oder ihre Anhänge nicht lesen, verwenden, kopieren oder weitergeben.
Sollten Sie die Mail versehentlich erhalten haben, teilen Sie mir dies bitte umgehend per Antwort-E-Mail mit und löschen Sie diese E-Mail dann aus Ihrem System. Vielen Dank
Beckhoff Automation GmbH & Co. KG
Managing Director: Dipl. Phys. Hans Beckhoff
Registered office: Verl, Germany
Register court: Guetersloh HRA 7075
DisclaimerID:x9d5u140