[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