Hello everyone. Just got a backtrace from the coredump file:
(gdb) bt #0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51 #1 0x0000ffffbba66df4 in __GI_abort () at abort.c:89 #2 0x0000aaaae000a8bc in assertion_failed (file=<optimized out>, line=<optimized out>, type=<optimized out>, cond=<optimized out>) at ../../../bin/named/main.c:232 #3 0x0000ffffbbe7274c in isc_assertion_failed () from /usr/lib/aarch64-linux-gnu/libisc.so.160 #4 0x0000ffffbc339400 in dns_rdata_compare (rdata1=<optimized out>, rdata2=0xffffb5608e70) at ../../../lib/dns/rdata.c:421 #5 0x0000ffffbba67600 in msort_with_tmp (p=0xffffb924dcd8, b=0xffffb924dc18, n=3) at msort.c:124 #6 0x0000ffffbba6745c in msort_with_tmp (n=2, b=0xffffb924dc20, p=0xffffb924dcd8) at msort.c:45 #7 msort_with_tmp (p=0xffffb924dcd8, b=0x28, n=281473787943944) at msort.c:54 #8 0x0000ffffbba6745c in msort_with_tmp (n=3, b=0xffffb924dc18, p=0xffffb924dcd8) at msort.c:45 #9 msort_with_tmp (p=0xffffb924dcd8, b=0xffffa0808498, n=1) at msort.c:54 #10 0x0000ffffbba67804 in msort_with_tmp (n=5, b=<optimized out>, p=0xffffb924dd28) at msort.c:45 #11 __GI___qsort_r (b=b@entry=0xffffb5608dd0, n=5, n@entry=13744632836034396160, s=s@entry=40, cmp=cmp@entry=0xffffbc2caea8 <rdata_compare_wrapper>, arg=arg@entry=0x0) at msort.c:254 #12 0x0000ffffbba679d0 in __GI_qsort (b=b@entry=0xffffb5608dd0, n=n@entry=13744632836034396160, s=s@entry=40, cmp=cmp@entry=0xffffbc2caea8 <rdata_compare_wrapper>) at msort.c:308 #13 0x0000ffffbc2cb0f4 in rdataset_to_sortedarray (set=<optimized out>, mctx=0xaaaaf3852de0, rdata=0xffffb924dec8, nrdata=0xffffb4543430) at ../../../lib/dns/dnssec.c:136 #14 0x0000ffffb924dbe0 in ?? () Backtrace stopped: not enough registers or memory available to unwind further This is really strange: (gdb) frame 13 #13 0x0000ffffbc2cb0f4 in rdataset_to_sortedarray (set=<optimized out>, mctx=0xaaaaf3852de0, rdata=0xffffb924dec8, nrdata=0xffffb4543430) at ../../../lib/dns/dnssec.c:136 136 qsort(data, n, sizeof(dns_rdata_t), rdata_compare_wrapper); (gdb) print n $20 = 4 (gdb) print &data[3] $21 = (dns_rdata_t *) 0xffffb5608e48 Here is what: (frame 4) - rdata_compare procedure (called by libc qsort) we have rdata2 as 0xffffb5608e70 0xffffb5608e70 > 0xffffb5608e48 (gdb) print &data[4] $22 = (dns_rdata_t *) 0xffffb5608e70 This is what confusing me! How is it happening. Continue my investigation. -- Philippe Duke Network software engineer System-level developer NetAssist LLC Ukraine Khreshchatyk Street, 10B, office 8 AS29632 http://netassist.ua Our GitHub Repository: https://github.com/netassist-ua