crash after failed ixfr-from-differences on a catalog zone
Summary
Catalog zone configured ixfr-from-differences yes
can crash the server if sequence of events is unfortunate enough.
BIND version used
Steps to reproduce
- Configure catalog zone together with
ixfr-from-differences yes
(see config snippet below) - Add a new zone into the catalog zone on disk but do NOT update catalog's serial number
ID=$(date +%s); echo "$ID.zones 0 IN PTR z$ID.test." >> catalog.db
- Issue reload:
rndc reload
- Check error messages - it is all suspicious as it says "not loaded due to errors" but at the same time it logs that a new zone was added from catalog (smells like another bug?). Anyway - logs are below.
- Issue another reload, without modifying the catalog further
rndc reload
- Enjoy fireworks
What is the current bug behavior?
Crash on subsequent catalog zone reload.
Relevant configuration files
options {
catalog-zones {
zone "catalog.invalid" default-masters {
127.0.0.2;
} zone-directory "catzones" in-memory no min-update-interval 1;
};
ixfr-from-differences yes;
recursion no;
allow-transfer {
"any";
};
notify no;
};
zone "catalog.invalid." {
type primary;
file "catalog.db";
notify explicit;
};
Relevant logs and/or screenshots
11:24:46.281 zone catalog.invalid/IN: ixfr-from-differences: new serial (1672994472) out of range [1672994473 - 3820478119]
11:24:46.281 zone catalog.invalid/IN: not loaded due to errors.
11:24:46.281 catz: updating catalog zone 'catalog.invalid' with serial 1672994472
11:24:46.281 catz: adding zone 'z1673000681.test' from catalog 'catalog.invalid' - success
11:24:46.281 zone z1673000681.test/IN: refresh: failure trying primary 127.0.0.2#53 (source 0.0.0.0#0): connection refused
11:24:54.888 received control channel command 'reload catalog.invalid'
11:24:54.891 rbtdb.c:1261: INSIST(((rbtdb->common.update_listeners).head == ((void *)0))) failed, back trace