Bug 988718
Summary: | libvirtd crash when delete srv only passing one mandatory attributes via virsh net-update | ||||||
---|---|---|---|---|---|---|---|
Product: | Red Hat Enterprise Linux 7 | Reporter: | hongming <honzhang> | ||||
Component: | libvirt | Assignee: | Ján Tomko <jtomko> | ||||
Status: | CLOSED CURRENTRELEASE | QA Contact: | Virtualization Bugs <virt-bugs> | ||||
Severity: | high | Docs Contact: | |||||
Priority: | high | ||||||
Version: | 7.0 | CC: | acathrow, dyuan, jtomko, laine, mzhan, yalzhang, ydu | ||||
Target Milestone: | rc | ||||||
Target Release: | --- | ||||||
Hardware: | Unspecified | ||||||
OS: | Unspecified | ||||||
Whiteboard: | |||||||
Fixed In Version: | libvirt-1.1.1-1.el7 | Doc Type: | Bug Fix | ||||
Doc Text: | Story Points: | --- | |||||
Clone Of: | Environment: | ||||||
Last Closed: | 2014-06-13 10:34:46 UTC | Type: | Bug | ||||
Regression: | --- | Mount Type: | --- | ||||
Documentation: | --- | CRM: | |||||
Verified Versions: | Category: | --- | |||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
Cloudforms Team: | --- | Target Upstream Version: | |||||
Embargoed: | |||||||
Attachments: |
|
Description
hongming
2013-07-26 08:44:33 UTC
Created attachment 778706 [details]
libvirt debug log
Upstream patch proposed: https://www.redhat.com/archives/libvir-list/2013-July/msg01711.html Now fixed upstream: commit 461fd86a661f32a9aa8044190b2a63b05290332f Author: Ján Tomko <jtomko> AuthorDate: 2013-07-26 12:11:21 +0200 Commit: Ján Tomko <jtomko> CommitDate: 2013-07-26 12:53:45 +0200 Don't check validity of missing attributes in DNS SRV XML This fixes a crash if one of them is missing. https://bugzilla.redhat.com/show_bug.cgi?id=988718 git describe: v1.1.1-rc1-35-g461fd86 virsh net-update default delete dns-host "<host protocol='name'/>" was also crashing if there were no dns host records in the network, fixed by: commit c4e23388e6c7f769e45d1c162f880cd81e4d4d3b Author: Ján Tomko <jtomko> AuthorDate: 2013-07-26 12:04:32 +0200 Commit: Ján Tomko <jtomko> CommitDate: 2013-07-26 12:50:34 +0200 Set the number of elements 0 in virNetwork*Clear Decrementing it when it was already 0 causes an invalid free in virNetworkDefUpdateDNSHost if virNetworkDNSHostDefParseXML fails and virNetworkDNSHostDefClear gets called twice. virNetworkForwardDefClear left the number untouched even if it freed all the elements. git describe: v1.1.1-rc1-34-gc4e2338 Verify this bug with libvirt-1.1.1-1.el7.x86_64. Following the reproduce steps in comment0: Create/Define,start a libvirt network # virsh net-list Name State Autostart Persistent ---------------------------------------------------------- default active yes yes network active no no # virsh net-update network delete dns-srv "<srv service='name'/>" Updated network network live state # virsh net-dumpxml network <network> <name>network</name> <uuid>2531df5b-adf0-471f-95f7-68d627053342</uuid> <bridge name='virbr2' stp='on' delay='0' /> <mac address='52:54:00:90:a1:29'/> <domain name='example.com'/> <dns> <txt name='example' value='example value' /> <host ip='192.168.10.2'> <hostname>myhost</hostname> <hostname>myhostalias</hostname> </host> </dns> <ip address='192.168.10.1' netmask='255.255.255.0'> <dhcp> <range start='192.168.10.2' end='192.168.10.254' /> </dhcp> </ip> </network> # virsh net-update network add dns-srv "<srv service='name' protocol='tcp'/>" Updated network network live state # virsh net-update network delete dns-txt "<txt name='example' value='example value'/>" Updated network network live state This request was resolved in Red Hat Enterprise Linux 7.0. Contact your manager or support representative in case you have further questions about the request. Hi jtomko, As comment 5 above, it indicates that the dns-srv, dns-txt, dns-host(I have tried) can be updated by the command net-update. But in fact, it can not take effect immediately. Perhaps it needs to re-run dnsmasq to pick up the changes just like update ip-dhcp-range. what do you think about it? # virsh net-dumpxml network <network> <name>network</name> <uuid>2531df5b-adf0-471f-95f7-68d627053342</uuid> <bridge name='virbr2' stp='on' delay='0'/> <mac address='52:54:00:90:a1:29'/> <domain name='example.com'/> <dns> <txt name='example' value='example value'/> <srv service='name' protocol='tcp' domain='test-domain-name' target='englab.nay.redhat.com' port='1024' priority='10' weight='10'/> <host ip='192.168.10.2'> <hostname>myhost</hostname> <hostname>myhostalias</hostname> </host> </dns> <ip address='192.168.10.1' netmask='255.255.255.0'> <dhcp> <range start='192.168.10.2' end='192.168.10.254'/> </dhcp> </ip> </network> # virsh net-update network delete dns-srv "<srv service='name' protocol='tcp'/>" Updated network network live state # virsh net-update network delete dns-txt "<txt name='example'/>" Updated network network live state # virsh net-dumpxml network <network> <name>network</name> <uuid>2531df5b-adf0-471f-95f7-68d627053342</uuid> <bridge name='virbr2' stp='on' delay='0'/> <mac address='52:54:00:90:a1:29'/> <domain name='example.com'/> <dns> <host ip='192.168.10.2'> <hostname>myhost</hostname> <hostname>myhostalias</hostname> </host> </dns> <ip address='192.168.10.1' netmask='255.255.255.0'> <dhcp> <range start='192.168.10.2' end='192.168.10.254'/> </dhcp> </ip> </network> # cat /var/lib/libvirt/dnsmasq/network.conf ##WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE ##OVERWRITTEN AND LOST. Changes to this configuration should be made using: ## virsh net-edit network ## or other application using the libvirt API. ## ## dnsmasq conf file created by libvirt strict-order domain=example.com expand-hosts pid-file=/var/run/libvirt/network/network.pid except-interface=lo bind-dynamic interface=virbr2 dhcp-option=3 no-resolv txt-record=example,example value srv-host=_name._tcp.test-domain-name,englab.nay.redhat.com,1024,10,10 dhcp-range=192.168.10.2,192.168.10.254 dhcp-no-override dhcp-lease-max=253 dhcp-hostsfile=/var/lib/libvirt/dnsmasq/network.hostsfile addn-hosts=/var/lib/libvirt/dnsmasq/network.addnhosts The txt and srv still exists in the network.conf file after delete. And still can parse correctly in the guest. Yes, it is possible libvirtd forgot to write the config file. That is unrelated to this bug about libvirtd crashing, please file a separate one. I haven't seen a separate bug filed yet, but I do see the source of the problem and have posted a patch upstream: https://www.redhat.com/archives/libvir-list/2016-May/msg02122.html If you do file a bug, please note this patch email and assign it to me. file Bug 1341460 to track the issue in comment 8. |