virtnetworkd gets segmentation fault for no dnsmasq
Software environment
- Operating system: Red Hat Enterprise Linux 9.2
- Architecture: x86_64
- libvirt version: v9.1.0-232-g3916df52
Description of problem
For a host without dnsmasq, virtnetworkd will get segmentation fault
Steps to reproduce
- Prepare a hosts without dnsmasq installed.
- Compile libvirt with the configuration:
/usr/bin/meson --buildtype=debug --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/libexec --bindir=/usr/bin --sbindir=/usr/sbin --includedir=/usr/include --datadir=/usr/share --mandir=/usr/share/man --infodir=/usr/share/info --localedir=/usr/share/locale --sysconfdir=/etc --localstatedir=/var --sharedstatedir=/var/lib --wrap-mode=nodownload --auto-features=enabled . redhat-linux-build -Drunstatedir=/run -Ddriver_qemu=enabled -Ddriver_openvz=disabled -Ddriver_lxc=disabled -Ddriver_vbox=disabled -Ddriver_libxl=disabled -Dsasl=enabled -Dpolkit=enabled -Ddriver_libvirtd=enabled -Ddriver_remote=enabled -Ddriver_test=enabled -Ddriver_esx=enabled -Dcurl=enabled -Ddriver_hyperv=disabled -Dopenwsman=disabled -Ddriver_vmware=disabled -Ddriver_vz=disabled -Ddriver_bhyve=disabled -Ddriver_ch=disabled -Dremote_default_mode=direct -Ddriver_interface=enabled -Ddriver_network=enabled -Dstorage_fs=enabled -Dstorage_lvm=enabled -Dstorage_iscsi=enabled -Dstorage_iscsi_direct=disabled -Dlibiscsi=disabled -Dstorage_scsi=enabled -Dstorage_disk=enabled -Dstorage_mpath=enabled -Dstorage_rbd=enabled -Dstorage_gluster=disabled -Dglusterfs=disabled -Dstorage_zfs=disabled -Dstorage_vstorage=disabled -Dnumactl=enabled -Dnumad=enabled -Dcapng=enabled -Dfuse=disabled -Dnetcf=disabled -Dselinux=enabled -Dselinux_mount=/sys/fs/selinux -Dapparmor=disabled -Dapparmor_profiles=disabled -Dsecdriver_apparmor=disabled -Dudev=enabled -Dyajl=enabled -Dsanlock=enabled -Dlibpcap=enabled -Dlibnl=enabled -Daudit=enabled -Ddtrace=enabled -Dfirewalld=enabled -Dfirewalld_zone=enabled -Dwireshark_dissector=enabled -Dlibssh=enabled -Dlibssh2=disabled -Dpm_utils=disabled -Dnss=enabled '-Dpackager=Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>, 2023-03-13-09:31:29, ' -Dpackager_version=1.el9 -Dqemu_user=qemu -Dqemu_group=qemu -Dqemu_moddir=/usr/lib64/qemu -Dqemu_datadir=/usr/share/qemu -Dtls_priority=@LIBVIRT,SYSTEM -Dwerror=true -Dexpensive_tests=enabled -Dinit_script=systemd -Ddocs=enabled -Dtests=enabled -Drpath=disabled -Dlogin_shell=disabled
meson compile -C redhat-linux-build/
- Start virtnetworkd by
redhat-linux-build/src/virtnetworkd
. Results:
2023-03-16 03:30:11.883+0000: 672212: info : libvirt version: 9.2.0, package: 1.el9 (Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>, 2023-03-13-09:31:29, )
2023-03-16 03:30:11.883+0000: 672212: info : hostname: XXXXX
2023-03-16 03:30:11.883+0000: 672212: error : dnsmasqCapsNewFromBinary:673 : Unable to find 'dnsmasq' binary in $PATH: No such file or directory
Backtrace:
#0 0x00007ffff7ac9813 in dnsmasqCapsGetBinaryPath (caps=0x0) at ../src/util/virdnsmasq.c:687
#1 0x00007fffe4fe075c in networkUpdateState (obj=0x7fffa8010500, opaque=0x7fffa80216a0)
at ../src/network/bridge_driver.c:501
#2 0x00007ffff7c18558 in virNetworkObjListForEachHelper
(payload=0x7fffa8010500, name=0x7fffa802c0d0 "aeb1b349-5cea-4d13-8e07-448a6eb91e90", opaque=0x7fffc5ffa8e0)
at ../src/conf/virnetworkobj.c:1383
#3 0x00007ffff7adfb43 in virHashForEachSafe
(table=0x7fffa8018700 = {...}, iter=0x7ffff7c18521 <virNetworkObjListForEachHelper>, opaque=0x7fffc5ffa8e0)
at ../src/util/virhash.c:387
#4 0x00007ffff7c185d2 in virNetworkObjListForEach
(nets=0x7fffa801b490, callback=0x7fffe4fe053c <networkUpdateState>, opaque=0x7fffa80216a0)
at ../src/conf/virnetworkobj.c:1410
#5 0x00007fffe4fe0d5b in networkStateInitialize
(privileged=true, root=0x0, monolithic=false, callback=0x55555557a563 <daemonInhibitCallback>, opaque=0x555555625070) at ../src/network/bridge_driver.c:635
#6 0x00007ffff7dc3d5c in virStateInitialize
(privileged=true, mandatory=true, root=0x0, monolithic=false, callback=0x55555557a563 <daemonInhibitCallback>, opaque=0x555555625070) at ../src/libvirt.c:653
#7 0x000055555557a8a0 in daemonRunStateInit (opaque=0x555555625070) at ../src/remote/remote_daemon.c:610
#8 0x00007ffff7b460c1 in virThreadHelper (data=0x55555562c560) at ../src/util/virthread.c:256
#9 0x00007ffff749f802 in start_thread () at /lib64/libc.so.6
#10 0x00007ffff743f450 in clone3 () at /lib64/libc.so.6
Additional information
Full backtrace gdb.txt