Dear Justin,

There appears to be some problem with the mailing list as it formats whatever I 
cut paste from gdb. I have tried it three times, but it fail each time. It is 
somewhat captured correctly in your mailing archive below:
http://openvswitch.org/pipermail/dev/2015-October/060884.html
However it is still garbled toward the end. Our main concern is why is 
hmap_remove picking up bucket 7 instead of 6? Was it because of any resizing of 
the hmap array? The crash happen randomly, sometime after adding ports or even 
after sending some basic pings between VMs on the switch.

Also, may not be connected to this problem, but I noticed that hmap_remove is 
lacking basic NULL pointer check and it can crash if it is called on an empty 
hmap pointer. Should it not return failure instead of crashing in these 
situations? We thought it could be modified as follows:
voidhmap_remove(struct hmap *hmap, struct hmap_node *node){    struct 
hmap_node *bucket = &hmap->buckets[node->hash & hmap->mask];
    if (!*bucket) {        return;    
}    while (bucket && *bucket != node) {      
  bucket = *bucket ? &(*bucket)->next : NULL;    }  
  if (!*bucket) {        return;    }  
  *bucket = node->next;    hmap->n--;}
Thanking you,Richukov
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to