Offloaded RPZ processing needs 'shuttingdown' signal
When the database is shutdown during the threadpool processing of the RPZ, we would crash:
#0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
#1 0x00007f99990958f3 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
#2 0x00007f99990486a6 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3 0x00007f99990327d3 in __GI_abort () at abort.c:79
#4 0x0000000000415baa in assertion_failed (file=<optimized out>, line=<optimized out>, type=<optimized out>, cond=<optimized out>) at main.c:237
#5 0x00007f9999af07fa in isc_assertion_failed (file=file@entry=0x7f9999a42890 "db.c", line=line@entry=581, type=type@entry=isc_assertiontype_require,
cond=cond@entry=0x7f9999a49528 "nodep != ((void *)0) && *nodep != ((void *)0)") at assertions.c:49
#6 0x00007f99998f2bef in dns_db_detachnode (db=<optimized out>, nodep=nodep@entry=0x7f99739f98f0) at db.c:581
#7 0x00007f99999ca3b2 in update_nodes (rpz=rpz@entry=0x7f99928d1400, newnodes=<optimized out>) at rpz.c:1762
#8 0x00007f99999cace8 in update_rpz_cb (data=0x7f99928d1400) at rpz.c:1942
#9 0x00007f99993fce94 in uv__queue_work (w=0x7f9907839600) at /usr/src/libuv-v1.43.0/src/threadpool.c:326
#10 0x00007f99993fc61c in worker (arg=0x0) at /usr/src/libuv-v1.43.0/src/threadpool.c:122
#11 0x00007f9999093b1a in start_thread (arg=<optimized out>) at pthread_create.c:443
#12 0x00007f99991178e4 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:100
Related MR with reverts:
Original issue:
Original MRs with offloaded RPZ:
Edited by Ondřej Surý