[ovs-discuss] Ovs-vswitchd crash issues need help
Huanglili (lee)
huanglili.huang at huawei.com
Fri Jul 15 09:45:33 UTC 2016
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!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://openvswitch.org/pipermail/ovs-discuss/attachments/20160715/2d5d3386/attachment-0002.html>
More information about the discuss
mailing list