Hi,
I'm a student at Antwerp University D' Sciences and Technology and we are 
trying to bring up openvswitch-2.4 in our project environment. We are running 
into a crash that is affecting our research work. Here is some detail:
Stack trace:(gdb) bt
#0  hmap_remove (xcfg=0x2289520, xport=0x23874a0) at lib/hmap.h:245
#1  xlate_xport_remove (xcfg=0x2289520, xport=0x23874a0)
    at ofproto/ofproto-dpif-xlate.c:1318
#2  0x000000000043b6fc in xlate_xbridge_remove (xcfg=0x2289520,
    xbridge=0x2386c90) at ofproto/ofproto-dpif-xlate.c:1142
#3  0x000000000043ba0a in xlate_xcfg_free ()
    at ofproto/ofproto-dpif-xlate.c:1091
#4  xlate_txn_commit () at ofproto/ofproto-dpif-xlate.c:1050
#5  0x0000000000426dbb in type_run (type=<value optimized out>)
    at ofproto/ofproto-dpif.c:731
#6  0x000000000041a322 in ofproto_type_run (datapath_type=0x2285f00 
"system")
    at ofproto/ofproto.c:1740
#7  0x000000000040812d in bridge_run__ () at vswitchd/bridge.c:2928
#8  0x00000000004113a5 in bridge_run () at vswitchd/bridge.c:3000
#9  0x00000000004121ad in main (argc=10, argv=0x7fff37462dc8)
    at vswitchd/ovs-vswitchd.c:131
We inspected some frames:(gdb) frame 1
#1  xlate_xport_remove (xcfg=0x2289520, xport=0x23874a0)
    at ofproto/ofproto-dpif-xlate.c:1318
1318        hmap_remove(&xcfg->xports, 
&xport->hmap_node);(gdb) list
1313        }
1314
1315        clear_skb_priorities(xport);
1316        hmap_destroy(&xport->skb_priorities);
1317
1318        hmap_remove(&xcfg->xports, 
&xport->hmap_node);      <<<<<
1319        hmap_remove(&xport->xbridge->xports, 
&xport->ofp_node);
1320
1321        netdev_close(xport->netdev);
At line number 1318, we find xcfg->xports to be valid, and note the 
xport->hmap_node. All of the xport->ofport appear to be valid data.
(gdb) p &xport->hmap_node
$5 = (struct hmap_node *) 0x23874a0
(gdb) p xport->hmap_node
$6 = {hash = 7, next = 0x0}
(gdb) p xcfg->xports
$11 = {buckets = 0x2387620, one = 0x0, mask = 31, n = 45}
(gdb) p xport->ofport
$12 = (struct ofport_dpif *) 0x2232160(gdb) p *xport->ofport
$13 = {odp_port_node = {hash = 0, next = 0x0}, up = {hmap_node = {
      hash = 186588107, next = 0x0}, ofproto = 0x21b6f20, netdev 
= 0x2231f90,
    pp = {port_no = 12, hw_addr = "\362\366\a\035\275D",
      name = "taf2fe2592c\000\000\000\000", config = 0,
      state = OFPUTIL_PS_STP_LISTEN, curr = 0, advertised = 0, 
supported = 0,
      peer = 0, curr_speed = 0, max_speed = 0}, ofp_port = 12, 
change_seq = 3,
    created = 1260028, mtu = 0, op_vendor_data = 0x22322a0, rte_node 
= {
      hash = 186588107, next = 0x0}}, 
  odp_port = 9, bundle = 0x0, bundle_node = {prev = 0x0, next = 0x0},
  cfm = 0x0, bfd = 0x0, lldp = 0x0, may_enable = true, is_tunnel = true,
  is_layer3 = false, carrier_seq = 0, peer = 0x0, stp_port = 0x0,
  stp_state = STP_DISABLED, stp_state_entered = 0, rstp_port = 0x0,
  rstp_state = RSTP_DISABLED, qdscp = 0x0, n_qdscp = 0, realdev_ofp_port = 
0,
  vlandev_vid = 0}
However, peculiarly, we find that xport->hmap_node to be in wrong hash map 
bucket in frame 0 and as a result we trip. See below:


(gdb) frame 0
#0  hmap_remove (xcfg=0x2289520, xport=0x23874a0) at lib/hmap.h:245
245         while (*bucket != node) {(gdb) list240  
    * hmap_shrink() directly if desired. */241     static 
inline void242     hmap_remove(struct hmap *hmap, struct hmap_node 
*node)243     {244         struct hmap_node 
**bucket = &hmap->buckets[node->hash & hmap->mask];245   
      while (*bucket != node) {246         
    bucket = &(*bucket)->next;247         
}248         *bucket = node->next;









249         hmap->n--;
(gdb) p node->hash & hmap->mask
$7 = 7
(gdb) p hmap->buckets[7]
$8 = (struct hmap_node *) 0x0


(gdb) p hmap->buckets[6]
$15 = (struct hmap_node *) 0x23874a0 <<<<<
This makes us wonder if there is a bug in openvswitch-2.4 hash map library that 
computes wrong address during hashing. There is no particular sequence of 
events that reproduce this bug. But it often occurs during downloading flows 
from controller or even when adding some ports or deleting ports from ovs-vsctl.
Is this a known problem with openvswitch-2.4? If so, is there a patch available 
or is it fixed in new releases or master branch? Please help.
Regards,Richurov
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev

Reply via email to