dig +nssearch org crashes when network is unreachable
Summary
dig -6 nssearch org crashes with assertion failure
BIND version used
BIND 9.18.0 (Stable Release) <id:>
running on Linux x86_64 5.16.12-200.fc35.x86_64 #1 SMP PREEMPT Wed Mar 2 19:06:17 UTC 2022
built by make with '--build=x86_64-redhat-linux-gnu' '--host=x86_64-redhat-linux-gnu' '--program-prefix=' '--disable-dependency-tracking' '--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin' '--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share' '--includedir=/usr/include' '--libdir=/usr/lib64' '--libexecdir=/usr/libexec' '--sharedstatedir=/var/lib' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--localstatedir=/var' '--with-pic' '--disable-static' '--includedir=/usr/include/bind9' '--with-tuning=large' '--with-libidn2' '--with-maxminddb' '--with-gssapi=yes' '--with-lmdb=yes' '--with-json-c' '--enable-dnstap' '--with-cmocka' '--enable-fixed-rrset' '--enable-full-report' 'build_alias=x86_64-redhat-linux-gnu' 'host_alias=x86_64-redhat-linux-gnu' 'CC=gcc' 'CFLAGS= -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection' 'LDFLAGS=-Wl,-z,relro -Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 ' 'LT_SYS_LIBRARY_PATH=/usr/lib64:' 'PKG_CONFIG_PATH=:/usr/lib64/pkgconfig:/usr/share/pkgconfig'
compiled by GCC 11.2.1 20220127 (Red Hat 11.2.1-9)
compiled with OpenSSL version: OpenSSL 1.1.1l FIPS 24 Aug 2021
linked to OpenSSL version: OpenSSL 1.1.1l FIPS 24 Aug 2021
compiled with libuv version: 1.43.0
linked to libuv version: 1.44.1
compiled with libnghttp2 version: 1.45.1
linked to libnghttp2 version: 1.45.1
compiled with libxml2 version: 2.9.13
linked to libxml2 version: 20913
compiled with json-c version: 0.15
linked to json-c version: 0.15
compiled with zlib version: 1.2.11
linked to zlib version: 1.2.11
linked to maxminddb version: 1.6.0
compiled with protobuf-c version: 1.4.0
linked to protobuf-c version: 1.4.0
threads support is enabled
default paths:
named configuration: /etc/named.conf
rndc configuration: /etc/rndc.conf
DNSSEC root key: /etc/bind.keys
nsupdate session key: /var/run/named/session.key
named PID file: /var/run/named/named.pid
named lock file: /var/run/named/named.lock
geoip-directory: /usr/share/GeoIP
Steps to reproduce
(How one can reproduce the issue - this is very important.)
- have ipv6 local connectivity, but not with working default route to public internet
- dig -6 +nssearch org
What is the current bug behavior?
../../../bin/dig/dighost.c:1651: REQUIRE(targetp != ((void *)0) && *targetp == ((void *)0)) failed, back trace
/lib64/libisc-9.18.0.so(+0x39ce3)[0x7ffff7a5ece3]
/lib64/libisc-9.18.0.so(isc_assertion_failed+0x10)[0x7ffff7a5e1d0]
/usr/bin/dig(+0x16e70)[0x55555556ae70]
/usr/bin/dig(+0xee4e)[0x555555562e4e]
/usr/bin/dig(+0x10001)[0x555555564001]
/lib64/libisc-9.18.0.so(isc__nm_async_readcb+0xb1)[0x7ffff7a4d381]
/lib64/libisc-9.18.0.so(isc__nm_readcb+0x9b)[0x7ffff7a4d4bb]
/lib64/libisc-9.18.0.so(+0x29a35)[0x7ffff7a4ea35]
/lib64/libuv.so.1(uv_run+0xce)[0x7ffff755f09e]
/lib64/libisc-9.18.0.so(+0x2d5be)[0x7ffff7a525be]
/lib64/libisc-9.18.0.so(isc__trampoline_run+0x1a)[0x7ffff7a858ba]
/lib64/libc.so.6(+0x8db1a)[0x7ffff760fb1a]
/lib64/libc.so.6(+0x112650)[0x7ffff7694650]
What is the expected correct behavior?
Should report error state or nothing at all.
Relevant configuration files
(Paste any relevant configuration files - please use code blocks (```)
to format console output. If submitting the contents of your
configuration file in a non-confidential Issue, it is advisable to
obscure key secrets: this can be done automatically by using
named-checkconf -px
.)
Relevant logs and/or screenshots
(gdb) bt
#0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
#1 0x00007ffff76118f3 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
#2 0x00007ffff75c46a6 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3 0x00007ffff75ae7d3 in __GI_abort () at abort.c:79
#4 0x00007ffff7a5e1d5 in isc_assertion_failed (file=file@entry=0x55555556c134 "../../../bin/dig/dighost.c", line=line@entry=1651,
type=type@entry=isc_assertiontype_require, cond=cond@entry=0x5555555712c0 "targetp != ((void *)0) && *targetp == ((void *)0)")
at ../../../lib/isc/assertions.c:50
#5 0x000055555556ae70 in _query_attach.constprop.0 (source=0x7ffff63e3c40, targetp=0x7ffff5128d68, line=<optimized out>,
file=0x55555556c134 "../../../bin/dig/dighost.c") at ../../../bin/dig/dighost.c:1651
#6 0x0000555555562e4e in start_udp (query=<optimized out>) at ../../../bin/dig/dighost.c:2936
#7 0x0000555555564001 in recv_done (handle=0x7ffff63e0180, eresult=ISC_R_TIMEDOUT, region=0x7ffff5dfd290, arg=<optimized out>)
at ../../../bin/dig/dighost.c:3607
#8 0x00007ffff7a4d381 in isc__nm_async_readcb (worker=worker@entry=0x0, ev0=ev0@entry=0x7ffff5dfd2d0) at ../../../lib/isc/netmgr/netmgr.c:2798
#9 0x00007ffff7a4d4bb in isc__nm_readcb (sock=sock@entry=0x7ffff6395e00, uvreq=<optimized out>, eresult=eresult@entry=ISC_R_TIMEDOUT)
at ../../../lib/isc/netmgr/netmgr.c:2771
#10 0x00007ffff7a4ea35 in isc__nmsocket_readtimeout_cb (timer=0x7ffff6396230) at ../../../lib/isc/netmgr/netmgr.c:2087
#11 0x00007ffff755f09e in uv__run_timers (loop=0x7ffff622f010) at src/timer.c:178
#12 uv_run (loop=loop@entry=0x7ffff622f010, mode=mode@entry=UV_RUN_DEFAULT) at src/unix/core.c:382
#13 0x00007ffff7a525be in nm_thread (worker0=0x7ffff622f000) at ../../../lib/isc/netmgr/netmgr.c:691
#14 0x00007ffff7a858ba in isc__trampoline_run (arg=0x555555594f70) at ../../../lib/isc/trampoline.c:187
#15 0x00007ffff760fb1a in start_thread (arg=<optimized out>) at pthread_create.c:443
#16 0x00007ffff7694650 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
# {A}:{B} censors actual used range
# ping -6 -c 1 d0.org.afilias-nst.org.
PING d0.org.afilias-nst.org.(d0.org.afilias-nst.org (2001:500:f::1)) 56 data bytes
From 2620:52:{A}:{B}::3fc (2620:52:{A}:{B}::3fc) icmp_seq=1 Destination unreachable: Address unreachable
--- d0.org.afilias-nst.org. ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms
Possible fixes
(If you can, link to the line of code that might be responsible for the problem.)