I am trying to build a bit more advanced border router here capable of uRPF. For that reason, each eBGP peer gets its own kernel table, and bird is used to feed RST_BGP, RTS_STATIC and RTS_DEVICE routes to these supplementary tables, instead of messing with the "main" kernel routing table. Well, the Linux kernel syncer is not very sturdy ATM: it is prone to leaving behind some routes (which are correctly annotated as proto bird) when you set it to "persist 0". And it also segfaults... It segfaults both in v1.3.7 and git HEAD, so it is not a bug in the new "batched" route flushing code. Here's gdb output for git HEAD (standard hardened Debian build of bird): Starting program: /usr/sbin/bird -c /etc/bird/bird.conf -d -D /tmp/debug -u bird -g birdctl [Thread debugging using libthread_db enabled] Program received signal SIGSEGV, Segmentation fault. 0x000055555555d816 in rt_prune_step (max_feed=<optimized out>, tab=<optimized out>) at ../../nest/rt-table.c:958 958 ../../nest/rt-table.c: No such file or directory. in ../../nest/rt-table.c line 958 of nest/rt-table.c tries to reference e->sender, which apparently can be NULL (whether it *should* be NULL I don't know): rescan: for (e=n->routes; e; e=e->next) if (e->sender->core_state != FS_HAPPY && *** SIGSEGV HERE e->sender->core_state != FS_FEEDING) { if (*max_feed <= 0) { FIB_ITERATE_PUT(fit, fn); return 0; } rte_discard(tab, e); (*max_feed)--; goto rescan; } Any ideas? -- "One disk to rule them all, One disk to find them. One disk to bring them all and in the darkness grind them. In the Land of Redmond where the shadows lie." -- The Silicon Valley Tarot Henrique Holschuh