Some dnstap data may not be logged in BIND 9.15.6+
The introduction of netmgr doubled the number of threads from which
dnstap data may be logged: previously, it could only happen from within
taskmgr worker threads; with netmgr, it can happen both from taskmgr
worker threads and from network threads. Since the argument passed
to fstrm_iothr_options_set_num_input_queues()
was not updated to
reflect this change, some calls to fstrm_iothr_get_input_queue()
can now return NULL
, effectively preventing some dnstap data from
being logged. Whether this bug is triggered or not depends on thread
scheduling order and packet distribution between network threads, but
will almost certainly be triggered on any recursive resolver sooner or
later.
This issue has been introduced by !2528 (merged) (specifically by commit
53f0b6c3), i.e. it affects BIND 9.15.6+.
It was not caught by the dnstap
system test for two reasons:
-
the problem is rarely triggered in that system test as a low number of queries is sent to the tested servers,
-
another rarely triggered issue (with the test code itself) has been known to exist before and it has very similar symptoms.
I believe a fix for this issue warrants a release note.