Hi,
My earlier mail to ovs-dev had format errors. Resending again.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. In Frame 1, 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) frame 1#1  xlate_xport_remove (xcfg=0x2289520, 
xport=0x23874a0)    at ofproto/ofproto-dpif-xlate.c:13181318   
     hmap_remove(&xcfg->xports, 
&xport->hmap_node);(gdb) list1313        }13141315 
       clear_skb_priorities(xport);1316     
   hmap_destroy(&xport->skb_priorities);13171318     
   hmap_remove(&xcfg->xports, &xport->hmap_node); 
     <<<<<1319       
 hmap_remove(&xport->xbridge->xports, 
&xport->ofp_node);13201321       
 netdev_close(xport->netdev);(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->o
 fport$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}}, 
ofpd_vendor_data = 0x21e03d0,  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:245245         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
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to