On 4/14/2016 11:27 AM, Jafar Al-Gharaibeh wrote:

I'm running the latest Quagga release on a few routers and I get random crashes every now and then when I restart Quagga followed by another program that pushes a lot of configuration through vtysh. All of the links I have are GRE tunnels (point-to-point) sharing the IP address of the physical interface they are running on top of. This has always worked using the "apt-get'ed" 0.99.17 version of Quagga. I started to see the crash after updating to the newest release.

I debugged this under gdb and the two cases that I captures happened after a change to an interface, the cost in one case, up/down in another. In both cases the crash happen because of a bogus table pointer when working on refreshing LSA due to the change. I found that the actual problem is up in the the stack when processing neighbors on an interface. The list of neighbors has two entries (represented by two route_node structures).

Question: The first neighbor on the interface (call it interface A) is the router (Router ID X ) itself, is that correct? I can see a neighbor with router ID X. I also can see that the interface field in the neighbor's structure points back to A which seems logical.

The second neighbor (which actually causes the crash down the stack) is again the router itself with but this time with router ID A (my configuration program probably pushes the ID X the first thing, but I have to confirm is we start with ID A in the config file) but most of the fields contains garbage data including the interface field.

Just to confirm here. Quagga initially starts with the semi-empty configuration., not even a router ID. Everything is done dynamically at runtime through vtysh.

Going back to the two route node (rn) entries above. One rn points to a neighbor that happens to be "self", the other rn has address/netmask that matches the interface (A in my example above). The info pointer that is supposed to point to a neighbor seems to be just garbage (uninitialized neighbor maybe? or it should be null)

--Jafar


I will continue debugging this but if anyone can answer my question above that would greatly help.

Thanks,
Jafar

_______________________________________________
Quagga-dev mailing list
[email protected]
https://lists.quagga.net/mailman/listinfo/quagga-dev



_______________________________________________
Quagga-dev mailing list
[email protected]
https://lists.quagga.net/mailman/listinfo/quagga-dev

Reply via email to