While working as a bird route server arises srash. Failure observed in versions 1.3.0 and 1.2.4 and occurs when scanning the routing table .. How do I fix this? OS where working bird - freebsd 7.3 Last messages in log file 03-06-2011 06:57:30 <TRACE> xxxx1: Got KEEPALIVE 03-06-2011 06:57:30 <TRACE> xxxx2: Got KEEPALIVE 03-06-2011 06:57:31 <TRACE> xxxx3: Got KEEPALIVE 03-06-2011 06:57:33 <TRACE> xxxx4: Sending KEEPALIVE 03-06-2011 06:57:33 <TRACE> xxxx5: Got KEEPALIVE 03-06-2011 06:57:33 <TRACE> xxxx6: Got KEEPALIVE 03-06-2011 06:57:33 <TRACE> xxxx7: Connecting to xx.xx.xx.xx from local address xxx.xxx.xxx.xxx 03-06-2011 06:57:33 <TRACE> device1: Scanning interfaces 03-06-2011 06:57:33 <TRACE> kernel1: Scanning routing table 03-06-2011 06:57:33 <FATAL> RT scan 2 kernel protocol config protocol kernel { #persist; # Don't remove routes on bird shutdown scan time 20; # Scan kernel routing table export all; # Default is export none import none; } Unfortunately I can not find a coredump, apparently was not made at crash P.S. Sorry, my english is bad
On Fri, Jun 03, 2011 at 02:32:47PM +0400, Denis Samsonov wrote:
While working as a bird route server arises srash. Failure observed in versions 1.3.0 and 1.2.4 and occurs when scanning the routing table .. How do I fix this? OS where working bird - freebsd 7.3
Last messages in log file 03-06-2011 06:57:33 <TRACE> kernel1: Scanning routing table 03-06-2011 06:57:33 <FATAL> RT scan 2
As far as I understand the reason for this is kernel routing table size changed between calls to sysctl(). This is easy to workaround with following patch, resulting in missing rescan instead of crash: diff -u -r bird-1.2.5/sysdep/bsd/krt-sock.c bird-1.2.5a/sysdep/bsd/krt-sock.c --- bird-1.2.5/sysdep/bsd/krt-sock.c 2010-08-03 18:44:51.000000000 +0300 +++ bird-1.2.5a/sysdep/bsd/krt-sock.c 2010-11-12 00:39:35.000000000 +0200 @@ -655,7 +655,8 @@ if (sysctl(mib, 6 , *buf, &needed, NULL, 0) < 0) { if (on != needed) return; /* The buffer size changed since last sysctl */ - die("RT scan 2"); + log(L_ERR "Sysctl scan error: %d, bufsize=%d needed=%d", errno, on, needed); + //die("RT scan 2"); } for (next = *buf; next < (*buf + needed); next += m->rtm.rtm_msglen) -- Eugene Perevyazko
On Fri, Jun 03, 2011 at 05:18:07PM +0300, Eugene Perevyazko wrote:
On Fri, Jun 03, 2011 at 02:32:47PM +0400, Denis Samsonov wrote:
While working as a bird route server arises srash. Failure observed in versions 1.3.0 and 1.2.4 and occurs when scanning the routing table .. How do I fix this? OS where working bird - freebsd 7.3
Last messages in log file 03-06-2011 06:57:33 <TRACE> kernel1: Scanning routing table 03-06-2011 06:57:33 <FATAL> RT scan 2
As far as I understand the reason for this is kernel routing table size changed between calls to sysctl(). Sorry, my mistake. According to my logs errno is always 12 (ENOMEM). The explanation is wrong, but the workaround works anyway. (FreeBSD 7-Stable, Bird 1.2.5)
-- Eugene Perevyazko
On Fri, Jun 03, 2011 at 05:18:07PM +0300, Eugene Perevyazko wrote:
On Fri, Jun 03, 2011 at 02:32:47PM +0400, Denis Samsonov wrote:
While working as a bird route server arises srash. Failure observed in versions 1.3.0 and 1.2.4 and occurs when scanning the routing table .. How do I fix this? OS where working bird - freebsd 7.3
Last messages in log file 03-06-2011 06:57:33 <TRACE> kernel1: Scanning routing table 03-06-2011 06:57:33 <FATAL> RT scan 2
As far as I understand the reason for this is kernel routing table size changed between calls to sysctl(). This is easy to workaround with following patch, resulting in missing rescan instead of crash:
Or use version 1.3.1, where this is already fixed. -- Elen sila lumenn' omentielvo Ondrej 'SanTiago' Zajicek (email: santiago@crfreenet.org) OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net) "To err is human -- to blame it on a computer is even more so."
participants (3)
-
Denis Samsonov -
Eugene Perevyazko -
Ondrej Zajicek