BIND 9.9.4 keeps crashing with `buffer.c:420: REQUIRE(l <= ((b)->length - (b)->used))`
Summary
So i'm trying to understand why but bind just randomly keeps crashing on me. There is no good pattern to it. It crashed with some websites. (https://bugs.launchpad.net/)
BIND version used
BIND 9.9.4-RedHat-9.9.4-72.el7 (Extended Support Version)
Steps to reproduce
I have no clue, updated from BIND 9.9.4-61.el7_5.1.x86_64 and kept crashing.
What is the current bug behavior?
Kills bind
What is the expected correct behavior?
Keep happily running like nothing is happening
Relevant configuration files
options {
listen-on port 53 { 10.10.0.22; };
//listen-on-v6 port 53 { ::1; };
version none;
provide-ixfr no;
auth-nxdomain no; # conform to RFC1035
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
notify explicit;
dnssec-lookaside auto;
filter-aaaa-on-v4 yes;
};
view "external" {
match-clients { !intern; any; };
recursion no;
allow-transfer { list1; list2; };
also-notify { list3; };
<snip zones>
};
view "internal" {
match-clients { intern; };
recursion yes;
allow-recursion { intern; };
allow-query { intern; };
notify no;
<snip zones>
};
Relevant logs and/or screenshots
gdb coredump
(gdb) bt
#0 0x00007fd50f896207 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:55
#1 0x00007fd50f8978f8 in __GI_abort () at abort.c:90
#2 0x0000557cdb7b925e in assertion_failed (file=<optimized out>, line=<optimized out>, type=<optimized out>,
cond=<optimized out>) at ./main.c:222
#3 0x00007fd510d1731a in isc_assertion_failed (file=file@entry=0x7fd510d54a48 "buffer.c", line=line@entry=420,
type=type@entry=isc_assertiontype_require, cond=cond@entry=0x7fd510d54cb0 "l <= ((b)->length - (b)->used)")
at assertions.c:57
#4 0x00007fd510d19b10 in isc__buffer_putstr (b=b@entry=0x7fd50cf68070, source=source@entry=0x7fd5124ecafe ";") at buffer.c:420
#5 0x00007fd5123d25e7 in rdataset_totext (rdataset=rdataset@entry=0x7fd50860d320, owner_name=owner_name@entry=0x7fd50860c150,
ctx=ctx@entry=0x7fd50cf67c10, omit_final_dot=omit_final_dot@entry=isc_boolean_false, target=target@entry=0x7fd50cf68070)
at masterdump.c:454
#6 0x00007fd5123d4133 in dns_master_rdatasettotext (owner_name=0x7fd50860c150, rdataset=rdataset@entry=0x7fd50860d320,
style=style@entry=0x7fd5124ed120 <dns_master_style_comment>, target=target@entry=0x7fd50cf68070) at masterdump.c:708
#7 0x00007fd5123dced8 in dns_message_sectiontotext (msg=msg@entry=0x7fd5086081d8, section=section@entry=2,
style=style@entry=0x7fd5124ed120 <dns_master_style_comment>, flags=flags@entry=0, target=target@entry=0x7fd50cf68070)
at message.c:3296
#8 0x00007fd5123ddbea in dns_message_totext (msg=msg@entry=0x7fd5086081d8,
style=style@entry=0x7fd5124ed120 <dns_master_style_comment>, flags=flags@entry=0, target=target@entry=0x7fd50cf68070)
at message.c:3520
#9 0x00007fd5123ddf6f in dns_message_logfmtpacket (message=message@entry=0x7fd5086081d8,
description=description@entry=0x7fd5124fa453 "received packet:\n", category=0x7fd512735bf0 <dns_categories+80>,
module=0x7fd512735b60 <dns_modules+480>, style=0x7fd5124ed120 <dns_master_style_comment>, level=level@entry=10,
mctx=0x557cdc9031d0) at message.c:3615
#10 0x00007fd5124689c6 in resquery_response (task=0x7fd508ff2190, event=<optimized out>) at resolver.c:6977
#11 0x00007fd510d3a276 in dispatch (manager=0x7fd512b19010) at task.c:1116
#12 run (uap=0x7fd512b19010) at task.c:1286
#13 0x00007fd5108eadd5 in start_thread (arg=0x7fd50cf69700) at pthread_create.c:307
#14 0x00007fd50f95dead in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
general.log
04-Dec-2018 20:06:34.873 buffer.c:420: REQUIRE(l <= ((b)->length - (b)->used)) failed, back trace
04-Dec-2018 20:06:34.873 #0 0x558401376090 in ??
04-Dec-2018 20:06:34.873 #1 0x7fd86798f31a in ??
04-Dec-2018 20:06:34.873 #2 0x7fd867991b10 in ??
04-Dec-2018 20:06:34.873 #3 0x7fd86904a5e7 in ??
04-Dec-2018 20:06:34.873 #4 0x7fd86904c133 in ??
04-Dec-2018 20:06:34.873 #5 0x7fd869054ed8 in ??
04-Dec-2018 20:06:34.873 #6 0x7fd869055bea in ??
04-Dec-2018 20:06:34.873 #7 0x7fd869055f6f in ??
04-Dec-2018 20:06:34.873 #8 0x7fd8690e09c6 in ??
04-Dec-2018 20:06:34.873 #9 0x7fd8679b2276 in ??
04-Dec-2018 20:06:34.873 #10 0x7fd867562dd5 in ??
04-Dec-2018 20:06:34.873 #11 0x7fd8665d5ead in ??
04-Dec-2018 20:06:34.873 exiting (due to assertion failure)
Possible fixes
(If you can, link to the line of code that might be responsible for the problem.)