[Dnsmasq-discuss] dnsmasq 2.86 crash

Eloy Paris peloy at chapus.net
Fri Oct 15 03:45:02 UTC 2021


Hi Simon,

I am running 2.87test4, which has the commit you mention below.

I've tested bringing down and up the external interfaces of the machine
(the ones that dnsmasq uses to reach the recursive DNS servers to
fulfill DNS requests it receives) and have not been able to reproduce a
crash anymore.

However, after bringing down an interface and a few seconds later
bringing it back up, DNS resolution stops working.

I see this in the system log right after I re-enable the interface that
I previously disabled:

Oct 14 23:28:14 chapilu dnsmasq[79367]: reading /etc/resolv.conf

and the packet capture shows:

23:29:24.737039 IP 192.168.122.165.60261 > 192.168.122.1.53: 18552+ A? google.com. (28)
23:29:24.737126 IP 192.168.122.1.53 > 192.168.122.165.60261: 18552 Refused 0/0/0 (28)

Under what conditions does dnsmasq respond to a resolution request with
REFUSED; no servers in /etc/resolv.conf?

I guess there might be a race condition here because I just sent SIGHUP
to the dnsmasq process and the system log shows this:

Oct 14 23:38:34 chapilu dnsmasq[79367]: read /etc/hosts - 4 addresses

and now DNS resolution works again!

No idea why dnsmasq is automatically detecting one change in
/etc/resolv.conf, and it apparently is one that does not contain any
servers.

Cheers,

Eloy Paris.-

On Wed, Oct 13, 2021 at 09:44:56AM +0100, Simon Kelley wrote:

> Based on the location of the crash, and the circumstances that cause it,
> my guess is that this will be fixed by
> 
> https://thekelleys.org.uk/gitweb/?p=dnsmasq.git;a=commit;h=d290630d31f4517ab26392d00753d1397f9a4114
> 
> Please could you try that, and get back to us if it doesn't sort the
> problem?
> 
> 
> Cheers,
> 
> Simon.
> 
> 
> On 13/10/2021 05:03, Eloy Paris wrote:
> > Sorry, I forgot the backtrace; here it is:
> > 
> > (gdb) bt
> > #0  0x0000561772564d46 in lookup_domain (domain=0x561772b1d7a0 "enterprise.activity.windows.com", flags=flags at entry=128,
> >     lowout=lowout at entry=0x7ffe8a4b63ac, highout=highout at entry=0x7ffe8a4b63b0) at domain-match.c:234
> > #1  0x0000561772532b1e in forward_query (udpfd=5, udpaddr=udpaddr at entry=0x7ffe8a4b6500, dst_addr=dst_addr at entry=0x7ffe8a4b64e0,
> >     dst_iface=dst_iface at entry=13, header=header at entry=0x561772b1fae0, plen=plen at entry=49, limit=0x561772b1fce0 "", now=1634091453,
> >     forward=0x0, ad_reqd=0, do_bit=0) at forward.c:258
> > #2  0x000056177253387e in receive_query (listen=listen at entry=0x561772b1f400, now=now at entry=1634091453) at forward.c:1636
> > #3  0x0000561772538b7c in check_dns_listeners (now=now at entry=1634091453) at dnsmasq.c:1810
> > #4  0x000056177251888b in main (argc=<optimized out>, argv=<optimized out>) at dnsmasq.c:1237
> > (gdb)
> > 
> > 
> > On Tue, Oct 12, 2021 at 10:55:22PM -0400, Eloy Paris wrote:
> >> Hello,
> >>
> >> I am experiencing crashes in dnsmasq (2.86). I am able to reproduce it
> >> though I am not sure about the exact sequence of events -- it happens
> >> when I enable/disable my Ethernet NIC and disable/enable my wireless
> >> NIC.
> >>
> >> In this use case, dnsmasq provides DNS and DHCP for a virtual machine
> >> (VM) running on KVM. Something like this:
> >>
> >>    +-- (Ethernet)-+
> >>    |              |
> >> Internet          + Hypervisor (virbr0) --- VM
> >>    |              |
> >>    +--- (Wi-fi)---+
> >>
> >> The interfaces I am enabling and disabling are on the hypervisor
> >> ("Ethernet" and "Wi-fi" above; virbr0 never goes down).
> >>
> >> I guess dnsmasq does not handle gracefully receiving a DNS request from
> >> the VM when the external interfaces of the hypervisor (Ethernet or
> >> wi-fi) go down?
> >>
> >> Some details below; happy to provide more information if that's not
> >> enough to get to the bottom of it.
> >>
> >> Cheers,
> >>
> >> Eloy Paris.-
> >>
> >> ----------------------------------------------------------------------
> >>
> >> elparis at chapilu[0]:~$ sudo coredumpctl debug dnsmasq
> >> [sudo] Mot de passe de elparis : 
> >>            PID: 46002 (dnsmasq)
> >>            UID: 65534 (nobody)
> >>            GID: 65534 (nobody)
> >>         Signal: 11 (SEGV)
> >>      Timestamp: Tue 2021-10-12 22:17:33 EDT (11min ago)
> >>   Command Line: /usr/bin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper
> >>     Executable: /usr/bin/dnsmasq
> >>  Control Group: /system.slice/libvirtd.service
> >>           Unit: libvirtd.service
> >>          Slice: system.slice
> >>        Boot ID: a42fe0fbd18649ad8a6951687e2855d8
> >>     Machine ID: 3d34409507634591951da9abb51a3942
> >>       Hostname: chapilu
> >>        Storage: /var/lib/systemd/coredump/core.dnsmasq.65534.a42fe0fbd18649ad8a6951687e2855d8.46002.1634091453000000.zst (present)
> >>      Disk Size: 204.6K
> >>        Message: Process 46002 (dnsmasq) of user 65534 dumped core.
> >>                 
> >>                 Found module linux-vdso.so.1 with build-id: c6d7bcf242640b81aef03f231535fa4c2486c744
> >>                 Found module libffi.so.7 with build-id: de60e99f39569d11d09160bbdcd486cedc87d2b6
> >>                 Found module libp11-kit.so.0 with build-id: 5314ec746546ada6f442b6fdfae15eab9f6d3cdc
> >>                 Found module libcrypto.so.1.1 with build-id: 6d23f0a3f354825868d044684fad31d482cc9210
> >>                 Found module libdl.so.2 with build-id: 5abc547e7b0949f89f3c0e21ab0c8331a7440a8a
> >>                 Found module libcrypt.so.2 with build-id: 3743451bdaf36f951f926927633fd964813025d0
> >>                 Found module libnss_systemd.so.2 with build-id: 22990ff716d182c427e26b7a3cf94048b55b3e75
> >>                 Found module libnss_files.so.2 with build-id: 1a36dfc01d3a1010b2ee79766a24a8090a3266d5
> >>                 Found module libgpg-error.so.0 with build-id: ba85170c2d9343ea05eea8fa2048c212ff4ef552
> >>                 Found module libgcrypt.so.20 with build-id: db45f5d5e0f7af1e77324fea1885f974619ad268
> >>                 Found module libcap.so.2 with build-id: c1674f9082fedd415876b9f7d9712269163259b5
> >>                 Found module liblz4.so.1 with build-id: e63600ab23b2f6997f42fac2fa56e1f02ce159a1
> >>                 Found module libzstd.so.1 with build-id: 4b10444c1560ebc574af4d5f488b7408b22d450e
> >>                 Found module liblzma.so.5 with build-id: 8b615460aa230708c5183f16bede67aa0437d95e
> >>                 Found module librt.so.1 with build-id: 75484da2d6f1515189eefa076e0a40328834cd16
> >>                 Found module ld-linux-x86-64.so.2 with build-id: 040cc3dd10461562f177df39e3be2f3704258c3c
> >>                 Found module libmnl.so.0 with build-id: fdf3a318247060fa3e451d511ebaf23a7396d1dd
> >>                 Found module libnfnetlink.so.0 with build-id: 273cc877c7b2ff41e88753edda777d7f1c4017ca
> >>                 Found module libunistring.so.2 with build-id: 015ac6d6bcb60b7d8bea31a80d1941b06e8636ab
> >>                 Found module libsystemd.so.0 with build-id: f776aaa16b4e2ba7056d01d928e4b2726ffe2b8b
> >>                 Found module libpthread.so.0 with build-id: 07c8f95b4f3251d08550217ad8a1f31066229996
> >>                 Found module libc.so.6 with build-id: 4b406737057708c0e4c642345a703c47a61c73dc
> >>                 Found module libgmp.so.10 with build-id: e58d34ab389d1b649c24195c2d145e3ff2e58290
> >>                 Found module libhogweed.so.6 with build-id: 2d70cff7b1841b4d9ca4e8e7726cd4b944c07fdc
> >>                 Found module libnettle.so.8 with build-id: 9a878e513c02007598fcf1e2e286c2203f13536e
> >>                 Found module libnetfilter_conntrack.so.3 with build-id: 0ad526380b1a1986a1e471a84d88d5f2a7fedd80
> >>                 Found module libidn2.so.0 with build-id: 1ce2b50ad9f9821c2c629b521cf5a3c99593d332
> >>                 Found module libdbus-1.so.3 with build-id: 74f2ab9c60512f3a93c932c3f627564d42e0b11e
> >>                 Found module dnsmasq with build-id: 17b49d0999133997748526c51d99bf8b932fb79d
> >>                 Stack trace of thread 46002:
> >>                 #0  0x0000561772564d46 lookup_domain (dnsmasq + 0x55d46)
> >>                 #1  0x0000561772532b1e forward_query (dnsmasq + 0x23b1e)
> >>                 #2  0x000056177253387e receive_query (dnsmasq + 0x2487e)
> >>                 #3  0x0000561772538b7c check_dns_listeners (dnsmasq + 0x29b7c)
> >>                 #4  0x000056177251888b main (dnsmasq + 0x988b)
> >>                 #5  0x00007f85147e4b25 __libc_start_main (libc.so.6 + 0x27b25)
> >>                 #6  0x00005617725197ae _start (dnsmasq + 0xa7ae)
> >>
> >> GNU gdb (GDB) 11.1
> >> Copyright (C) 2021 Free Software Foundation, Inc.
> >> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
> >> This is free software: you are free to change and redistribute it.
> >> There is NO WARRANTY, to the extent permitted by law.
> >> Type "show copying" and "show warranty" for details.
> >> This GDB was configured as "x86_64-pc-linux-gnu".
> >> Type "show configuration" for configuration details.
> >> For bug reporting instructions, please see:
> >> <https://www.gnu.org/software/gdb/bugs/>.
> >> Find the GDB manual and other documentation resources online at:
> >>     <http://www.gnu.org/software/gdb/documentation/>.
> >>
> >> For help, type "help".
> >> Type "apropos word" to search for commands related to "word"...
> >> Reading symbols from /usr/bin/dnsmasq...
> >> [New LWP 46002]
> >> [Thread debugging using libthread_db enabled]
> >> Using host libthread_db library "/usr/lib/libthread_db.so.1".
> >> Core was generated by `/usr/bin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-'.
> >> Program terminated with signal SIGSEGV, Segmentation fault.
> >> #0  0x0000561772564d46 in lookup_domain (domain=0x561772b1d7a0 "enterprise.activity.windows.com", flags=flags at entry=128, 
> >>     lowout=lowout at entry=0x7ffe8a4b63ac, highout=highout at entry=0x7ffe8a4b63b0) at domain-match.c:234
> >> 234	domain-match.c: Aucun fichier ou dossier de ce type.
> >> (gdb) 
> >>



More information about the Dnsmasq-discuss mailing list