Bind-9.4.0a5 + DLZ results in assertion failure on startup *solved (kind a)*

Edward van der Jagt edward at caret.nl
Thu May 11 12:23:18 UTC 2006


Had some unexpected time to kill, so I decided to go the hard way
and add debugging statements to the Bind code.
I finally traced the problem to these lines in bin/named/server.c (line  
3300):
         /*
          * Adjust the listening interfaces in accordance with the source
          * addresses specified in views and zones.
          */
       if (isc_net_probeipv6() == ISC_R_SUCCESS)
               adjust_interfaces(server, ns_g_mctx);

Now if I disable these 2 lines of code, named starts up just fine and does
its postgres queries the way it is supposed to. Leaving me with another  
problem
that it apparently wants mx_priority to be a decimal dotted quad, instead  
of just an
integer. But that is a different problem.

In conclusion the problem appears to be about IPv6, as the assertion  
occured at
something with v6 in its name. However I had disabled IPv6 listening in
named.conf after the first occurence of the assertion.
IPv6 is present in the OS kernel and /sbin/ifconfig shows an IPv6 address.

Have I stumbled across a bug or is this still a user error (which should  
then
be handled by a proper error message) ?

--

   Edward


<SNIP>
>> I just tried out the latest Bind release because I wanted the database
>> connection to PostgreSQL. Compiling and running the Bind server (tiny
>> test config) goes fine.
>> However when I insert the dlz configuration into named.conf, whether
>> using the Postgres or MySQL drivers, I get the same assertion error:
>>
>> 11-May-2006 10:32:57.449 starting BIND 9.4.0a5 -c
>> /usr/local/etc/named.conf -f -g -d 1
>> 11-May-2006 10:32:57.464 loading configuration from
>> '/usr/local/etc/named.conf'
>> 11-May-2006 10:32:57.466 listening on IPv4 interface lo, 127.0.0.1#53
>> 11-May-2006 10:32:57.480 Loading 'test5.it' using driver mysql
>> 11-May-2006 10:32:57.502 command channel listening on 127.0.0.1#953
>> 11-May-2006 10:32:57.503 command channel listening on ::1#953
>> 11-May-2006 10:32:57.503 ignoring config file logging statement due to
>> -g option
>> 11-May-2006 10:32:57.504 resolver.c:6659: REQUIRE((((resolver) != ((void
>> *)0)) && (((const isc__magic_t *)(resolver))->magic == ((('R') << 24 |
>> ('e') << 16 | ('s') << 8 | ('!')))))) failed
>> 11-May-2006 10:32:57.520 exiting (due to assertion failure) Aborted
>>
>> I've examined the networkdata on the connection to Postgres, but find
>> there are no queries done yet; only a connection is made. So the
>> contents of my database, which I've only inserted some lines for
>> testing, is not at fault.
>> My guess therefore is that there is some other config error in
>> named.conf which makes Bind abort execution.
>> I've tried to search through the sources to find what is wrong but
>> couldn't find any clear indication yet.
>>
>> Anyone got any ideas what is wrong ?
>>
>> Thanks.
>>
>> My named.conf :
>> ------------------------------------------
>> options {
>> directory "/usr/local/var/lib/named";
>> dump-file "/usr/local/var/log/named_dump.db";
>> statistics-file "/usr/local/var/log/named.stats";
>> listen-on-v6 { none; };
>> listen-on { 127.0.0.1; };
>> notify no;
>> };
>>
>> view "internal" {
>>    match-clients { 127.0.0.1; };
>>    recursion yes;
>>
>>    # dlz configuration will be inserted here
>>
>>    zone "." in {
>>    type hint;
>>    file "root.hint";
>>    };
>>
>>    zone "localhost" in {
>>    type master;
>>    file "localhost.zone";
>>            allow-update { none; };
>>    };
>>
>>    zone "0.0.127.in-addr.arpa" in {
>>    type master;
>>    file "127.0.0.zone";
>>            allow-update { none; };
>>    };
>>
>> };
>>
>> ------------------------------------------
>>
>> And my dlz configurations are these: (copied from bind-dlz sourceforge
>> page)
>> ------------------------------------------
>> dlz "test4.it" {
>>     database "postgres 1
>>     {host=127.0.0.1 port=5432 dbname=bind user=edward}
>>     {select zone from dns_records where zone = '%zone%'}
>>     {select ttl, type, mx_priority, case when lower(type)='txt' then
>> '\"'
>>           || data || '\"' when lower(type)='soa' then data || ' ' ||
>> resp_person || ' '
>>           || serial || ' ' || refresh || ' ' || retry || ' ' || expire
>> || '
>> ' || minimum
>>           else data end from dns_records where zone = '%zone%' and host
>> = '%record%'}"; };
>> ------------------------------------------
>> dlz "test5.it" {
>>     database "mysql
>>     {host=localhost dbname=dns_data ssl=tRue}
>>     {select zone from dns_records where zone = '%zone%'}
>>     {select ttl, type, mx_priority, case when lower(type)='txt' then
>> concat('\"', data, '\"')
>>          when lower(type) = 'soa' then concat_ws(' ', data, resp_person,
>> serial, refresh, retry, expire, minimum)
>>          else data end from dns_records where zone = '%zone%' and host =
>> '%record%'}"; };
>> ------------------------------------------
>>
>>
>>
>
>
>



-- 

   Edward



More information about the bind-users mailing list