[Olsr-dev] OLSRv2 Segfault
Henning Rogge
(spam-protected)
Fri Dec 27 19:47:53 CET 2013
Hi,
thank you for the bugreport, I would like to dig a little bit deeper
into this problem (maybe writing an automatic test-case afterwards).
Can you post the whole stacktrace from GDB first? That would allow to
identify if the error happens during the creation of a Hello or a TC.
Henning Rogge
On Fri, Dec 27, 2013 at 11:10 AM, Vigneswaran R <(spam-protected)> wrote:
> Hello,
>
> I am running olsrd2 on a few (qemu) virtual machines. On one of the virtual
> machines, olsrd2 segfaults within a few seconds. I am invoking OLSRd2 in the
> following manner,
>
> ./olsrd2 --set interface[eth0].bindto=10.0.0.0/8 --set
> interface[eth1].bindto=10.0.0.0/8 --set interface[eth2].bindto=10.0.0.0/8
>
> Traced the error using gdb to some extent. Please see the following patch
> for context.
>
> In general, addr_start->_block_end becomes NULL just before exiting from the
> do..while loop. However, in some cases, addr_start->_block_end becomes NULL
> before the do..while loop meeting the exit criteria (addr_end == last_addr).
> So, the loop continues and trying to de-reference NULL pointer causing
> segfault.
>
> --- a/oonf_api/src-api/rfc5444/rfc5444_msg_generator.c 2013-12-19
> 18:27:48.471467295 +0530
> +++ b/oonf_api/src-api/rfc5444/rfc5444_msg_generator.c 2013-12-27
> 14:15:14.000000000 +0530
> @@ -1180,7 +1180,7 @@
> tlvblock_length[0] = (ptr - tlvblock_length - 2) >> 8;
> tlvblock_length[1] = (ptr - tlvblock_length - 2) & 255;
> addr_start = list_next_element(addr_end, _addr_node);
> - } while (addr_end != last_addr);
> + } while (addr_end != last_addr && addr_start->_block_end != NULL);
>
> /* store size of address(tlv) data */
> msg->_bin_addr_size = ptr - start;
>
>
> I am using the latest oonf_api (last commit:
> 2355db6a460abe10cc7096842b3b10686c68012c) and olsrd2 (last commit:
> 23051120419372a175ddb08fa8a3bb8d7d709f1e) repositories.
>
> The Interface details are,
>
> 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
> link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
> inet 127.0.0.1/8 scope host lo
> inet6 ::1/128 scope host
> valid_lft forever preferred_lft forever
> 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
> UP qlen 1000
> link/ether de:ad:be:ef:5a:38 brd ff:ff:ff:ff:ff:ff
> inet 10.5.11.1/8 brd 10.255.255.255 scope global eth0
> inet6 fe80::dcad:beff:feef:5a38/64 scope link
> valid_lft forever preferred_lft forever
> 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
> UP qlen 1000
> link/ether de:ad:be:ef:0d:2f brd ff:ff:ff:ff:ff:ff
> inet 10.5.11.2/8 brd 10.255.255.255 scope global eth1
> inet6 fe80::dcad:beff:feef:d2f/64 scope link
> valid_lft forever preferred_lft forever
> 4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
> UP qlen 1000
> link/ether de:ad:be:ef:5a:39 brd ff:ff:ff:ff:ff:ff
> inet 10.5.11.3/8 brd 10.255.255.255 scope global eth2
> inet6 fe80::dcad:beff:feef:5a39/64 scope link
> valid_lft forever preferred_lft forever
>
>
> Regards,
> Vignesh
>
> --
> Olsr-dev mailing list
> (spam-protected)
> https://lists.olsr.org/mailman/listinfo/olsr-dev
More information about the Olsr-dev
mailing list