Hi, all: We have met two ovs-vswitchd coredump issues when I do press test on openvswitch-2.5.0. What we have done are lots of actions about bridge create/delete and port add/delete. And we met:
Segmentation fault 1: (gdb) bt #0 0x0000000000407753 in iface_destroy__ () #1 0x000000000040784c in port_destroy () #2 0x000000000040ca2e in bridge_reconfigure () #3 0x0000000000410360 in bridge_run () #4 0x000000000040683d in main () static void iface_destroy__(struct iface *iface) { … static inline void hmap_remove(struct hmap *hmap, struct hmap_node *node) { struct hmap_node **bucket = &hmap->buckets[node->hash & hmap->mask]; 407729: 48 8b 45 70 mov 0x70(%rbp),%rax 40772d: 48 23 43 20 and 0x20(%rbx),%rax hmap_remove(&br->ifaces, &iface->ofp_port_node); 407731: 48 8d 4b 20 lea 0x20(%rbx),%rcx 407735: 48 8b 55 60 mov 0x60(%rbp),%rdx 407739: 48 8d 04 c2 lea (%rdx,%rax,8),%rax while (*bucket != node) { 40773d: 48 8b 10 mov (%rax),%rdx 407740: 48 39 d1 cmp %rdx,%rcx 407743: 75 0e jne 407753 <iface_destroy__+0x63> 407745: eb 19 jmp 407760 <iface_destroy__+0x70> 407747: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1) 40774e: 00 00 407750: 48 89 c2 mov %rax,%rdx => 407753: 48 8b 42 08 mov 0x8(%rdx),%rax 407757: 48 39 c1 cmp %rax,%rcx 40775a: 75 f4 jne 407750 <iface_destroy__+0x60> bucket = &(*bucket)->next; 40775c: 48 8d 42 08 lea 0x8(%rdx),%rax } *bucket = node->next; 407760: 48 8b 53 28 mov 0x28(%rbx),%rdx 407764: 48 89 10 mov %rdx,(%rax) hmap->n--; 407767: 48 83 6d 78 01 subq $0x1,0x78(%rbp) … Segmentation fault 2: * port, as returned by mac_entry_get_port()), then the caller must initialize * the new entry's port to a nonnull value with mac_entry_set_port(). */ struct mac_entry * mac_learning_insert(struct mac_learning *ml, const struct eth_addr src_mac, uint16_t vlan) { … e = mac_entry_lookup(ml, src_mac, vlan); 469d38: e8 63 f7 ff ff callq 4694a0 <mac_entry_lookup> if (!e) { 469d3d: 48 85 c0 test %rax,%rax mac_learning_insert(struct mac_learning *ml, const struct eth_addr src_mac, uint16_t vlan) { struct mac_entry *e; e = mac_entry_lookup(ml, src_mac, vlan); 469d40: 48 89 c3 mov %rax,%rbx if (!e) { 469d43: 0f 84 97 00 00 00 je 469de0 <mac_learning_insert+0xc0> /* Removes 'elem' from its list and returns the element that followed it. Undefined behavior if 'elem' is not in a list. */ static inline struct ovs_list * list_remove(struct ovs_list *elem) { elem->prev->next = elem->next; 469d49: 48 8b 53 30 mov 0x30(%rbx),%rdx 469d4d: 48 8b 40 28 mov 0x28(%rax),%rax 469d51: 48 89 50 08 mov %rdx,0x8(%rax) elem->next->prev = elem->prev; 469d55: 48 8b 43 30 mov 0x30(%rbx),%rax 469d59: 48 8b 53 28 mov 0x28(%rbx),%rdx => 469d5d: 48 89 10 mov %rdx,(%rax) /* Inserts 'elem' just before 'before'. */ static inline void list_insert(struct ovs_list *before, struct ovs_list *elem) … Need your help, thanks!
_______________________________________________ discuss mailing list discuss@openvswitch.org http://openvswitch.org/mailman/listinfo/discuss