libvirt-bin nwfilter deadlock
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
libvirt (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Xenial |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
[Impact]
* Fix a potential deadlock
* The trigger is essentially a race, so it is rare and repro unreliable
[Test Case]
* This is the hard part for this issue, essentially changing NWFilters
through libvirt. The reporter hits it on removing a guest, but it is
hard to make a recipe by that.
* We have to fall back to general regression checks with an extra eye on
NWFilter handling
[Regression Potential]
* The only bad part is the hard repro, everything else seems to make this
low risk
- the patch is small
- the patch got no follow on fix in 2 years (so it is very stable)
- it unlocks earlier (so deadlocks are less likely)
- there is no data issue (being unlocked early) as explained in the
patch
[Other Info]
* n/a
---
When deleting a VM, libvirt-bin intermittently hits a deadlock in nwfilter instantiation code.
This is fixed in libvirt upstream, but the below commit is not cherrypicked in ubuntu yet:
https:/
Thread 5 (Thread 0x7f2ce1c4b700 (LWP 13866)):
#0 __lll_lock_wait () at ../sysdeps/
#1 0x00007f2cee30ce42 in __GI___
#2 0x00007f2cc7d7a62f in virNWFilterLock
#3 0x00007f2cc7d6ebf5 in ?? () from /usr/lib/
#4 0x00007f2cc7d6f84c in virNWFilterTear
---Type <return> to continue, or q <return> to quit---
#5 0x00007f2ceea32f0c in virDomainConfVM
#6 0x00007f2cc73d5a86 in qemuProcessStop () from /usr/lib/
#7 0x00007f2cc7420577 in ?? () from /usr/lib/
#8 0x00007f2ceea857cf in virDomainDestroy () from /usr/lib/
#9 0x000055c4ba3fe9db in ?? ()
#10 0x00007f2ceeaf8f69 in virNetServerPro
#11 0x00007f2ceeaf4478 in ?? () from /usr/lib/
#12 0x00007f2cee9eb566 in ?? () from /usr/lib/
#13 0x00007f2cee9eaae8 in ?? () from /usr/lib/
#14 0x00007f2cee30a6ba in start_thread (arg=0x7f2ce1c4
#15 0x00007f2cee04041d in clone () at ../sysdeps/
Thread 17 (Thread 0x7f2cc2801700 (LWP 8866)):
#0 __lll_lock_wait () at ../sysdeps/
#1 0x00007f2cee30ce42 in __GI___
#2 0x00007f2cc7d6f6d3 in virNWFilterInst
#3 0x00007f2cc7d7a9b2 in ?? () from /usr/lib/
#4 0x00007f2cee9eab12 in ?? () from /usr/lib/
#5 0x00007f2cee30a6ba in start_thread (arg=0x7f2cc280
#6 0x00007f2cee04041d in clone () at ../sysdeps/
Thanks for the report Pooja,
this is fixed in v1.3.5
By that this in anything newer than Xenial via being upstream.
I need to take a look at backporting the suggested change to Xenial, but that will probably not happen this week as I'm traveling.