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@entry=0x0) at ../lib/netlink.c:506 506 in ../lib/netlink.c (gdb) bt full 6 #0 nl_attr_get_size (nla=nla@entry=0x0) at ../lib/netlink.c:506 No locals. #1 0x0000000000460473 in format_generic_odp_key (a=a@entry=0x0, ds=ds@entry=0x7fff39eebf40) at ../lib/odp-util.c:767 len = <optimized out> #2 0x0000000000460cd2 in format_odp_key_attr (a=a@entry=0x1484afc, ma=ma@entry=0x0, ds=ds@entry=0x7fff39eebf40, verbose=verbose@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@entry=0x1484ad8, ma=ma@entry=0x0, ds=ds@entry=0x7fff39eebf40, verbose=verbose@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@entry=0x1484aa0, key_len=key_len@entry=100, mask=mask@entry=0x0, mask_len=mask_len@entry=0, ds=ds@entry=0x7fff39eebf40, verbose=verbose@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...)
_______________________________________________ discuss mailing list discuss@openvswitch.org http://openvswitch.org/mailman/listinfo/discuss