[ovs-discuss] Segfault in 2.0.2 version of openvswitch

sridhar basam sridhar.basam at gmail.com
Fri Dec 12 18:47:15 UTC 2014


Hey,
      We are experiencing sporadic ovs-vswitchd crashes in our Openstack
environment. We are using the Ubuntu 2.0.2 version of the code.

Kernel: 3.13.0-40-generic
openvswitch: 2.0.2-0ubuntu0.14.04.1

The stack trace is shown below. If you look at the stack frame 2 below, it
looks like 'a' is valid
(gdb) print *(struct nlattr *)0x1484afc
$5 = {nla_len = 6, nla_type = 18}

ma is NULL so i am not sure how the code ever gets to line 1332 in
odp-util.c

Is there any additional information i get provide to help track down the
cause for this crash?

thanks,
          Sridhar


 940 static void
 941 format_odp_key_attr(const struct nlattr *a, const struct nlattr *ma,
 942                     struct ds *ds, bool verbose)
 943 {
 944     struct flow_tnl tun_key;
 945     enum ovs_key_attr attr = nl_attr_type(a);
 946     char namebuf[OVS_KEY_ATTR_BUFSIZE];
 947     int expected_len;
 948     bool is_exact;
 949
 950     is_exact = ma ? odp_mask_attr_is_exact(ma) : true;
<snip>
1326     case OVS_KEY_ATTR_UNSPEC:
1327     case __OVS_KEY_ATTR_MAX:
1328     default:
1329         format_generic_odp_key(a, ds);
1330         if (!is_exact) {
1331             ds_put_char(ds, '/');
1332             format_generic_odp_key(ma, ds);
1333         }
1334         break;
1335     }



#0  nl_attr_get_size (nla=nla at entry=0x0) at ../lib/netlink.c:506
506 in ../lib/netlink.c
(gdb) bt full 6
#0  nl_attr_get_size (nla=nla at entry=0x0) at ../lib/netlink.c:506
No locals.
#1  0x0000000000460473 in format_generic_odp_key (a=a at entry=0x0,
ds=ds at entry=0x7fff39eebf40)
at ../lib/odp-util.c:767
        len = <optimized out>
#2  0x0000000000460cd2 in format_odp_key_attr (a=a at entry=0x1484afc,
ma=ma at entry=0x0, ds=ds at entry=0x7fff39eebf40, verbose=verbose at entry=true) at
../lib/odp-util.c:1332
        tun_key = {tun_id = 0, ip_src = 0, ip_dst = 0, flags = 0, ip_tos =
0 '\000', ip_ttl = 0 '\000'}
        attr = <optimized out>
        namebuf = "key18\000\377\377\000\000\000\000\000\000"
        is_exact = <optimized out>
#3  0x00000000004609d7 in odp_flow_format (key=<optimized out>, key_len=40,
mask=0x0, mask_len=0, ds=0x7fff39eebf40, verbose=true) at
../lib/odp-util.c:1402
        is_nested_attr = <optimized out>
        is_wildcard = <optimized out>
        attr_type = <optimized out>
        a = 0x1484afc
        ma = 0x0
        ofp = {base = 0x1484f90, allocated = 100, source = OFPBUF_MALLOC,
data = 0x1484f90, size = 0, l2 = 0x0, l2_5 = 0x0, l3 = 0x0, l4 = 0x0, l7 =
0x0, list_node = {prev = 0xcccccccccccccccc, next = 0xcccccccccccccccc},
          private_p = 0x0}
        first_field = <optimized out>
        left = 8
        has_ethtype_key = true
        mask_len = 0
        mask = 0x0
        key_len = 40
        key = 0x1484afc
        verbose = <optimized out>
        ds = 0x7fff39eebf40
#4  0x0000000000460fc4 in format_odp_key_attr (a=a at entry=0x1484ad8,
ma=ma at entry=0x0, ds=ds at entry=0x7fff39eebf40, verbose=verbose at entry=true) at
../lib/odp-util.c:987
        tun_key = {tun_id = 0, ip_src = 0, ip_dst = 0, flags = 0, ip_tos =
0 '\000', ip_ttl = 0 '\000'}
        attr = OVS_KEY_ATTR_ENCAP
        namebuf = "\377\377\377\377\377\377\377\377\000\000\000\000\000\000"
        is_exact = true
#5  0x00000000004609d7 in odp_flow_format (key=key at entry=0x1484aa0,
key_len=key_len at entry=100, mask=mask at entry=0x0, mask_len=mask_len at entry=0,
ds=ds at entry=0x7fff39eebf40, verbose=verbose at entry=true) at
../lib/odp-util.c:1402
        is_nested_attr = <optimized out>
        is_wildcard = <optimized out>
        attr_type = <optimized out>
        a = 0x1484ad8
        ma = 0x0
        ofp = {base = 0x1484b10, allocated = 100, source = OFPBUF_MALLOC,
data = 0x1484b10, size = 0, l2 = 0x0, l2_5 = 0x0, l3 = 0x0, l4 = 0x0, l7 =
0x0, list_node = {prev = 0xcccccccccccccccc, next = 0xcccccccccccccccc},
          private_p = 0x0}
        first_field = <optimized out>
        left = 44
        has_ethtype_key = true
        mask_len = 0
        mask = 0x0
        key_len = 100
        key = 0x1484ad8
        verbose = <optimized out>
        ds = 0x7fff39eebf40
(More stack frames follow...)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://openvswitch.org/pipermail/ovs-discuss/attachments/20141212/c8f3f198/attachment-0002.html>


More information about the discuss mailing list