[ovs-dev] [port-renumbering 7/8] bridge: Reconfigure in single pass.

Jarno Rajahalme jrajahalme at nicira.com
Thu Dec 12 00:09:57 UTC 2013


On Dec 11, 2013, at 3:14 PM, Ben Pfaff <blp at nicira.com> wrote:

> On Wed, Dec 11, 2013 at 02:17:13PM -0800, Jarno Rajahalme wrote:
>> While testing the code I accidentally requested a change in the interface type (to dummy), like this:
>> 
>> # ovs-vsctl add-br br0
>> # ovs-vsctl add-port br0 p1 -- set Interface p1 type=internal
>> # ovs-vsctl -- set Interface p1 type=dummy
>> 
>> Running OVS without dummy enabled seg faults:
> 
> I couldn't reproduce this, can you try to get me a backtrace or run
> under valgrind?


 I also upped logging to dbg:

2013-12-12T00:03:27Z|00309|netlink_socket|DBG|nl_sock_transact_multiple__ (Success): nl(len:40, type=196(ovs_vport), flags=9[REQUEST][ECHO], seq=35, pid=33664,genl(cmd=3,version=1)
2013-12-12T00:03:27Z|00310|netlink_socket|DBG|nl_sock_recv__ (Success): nl(len:124, type=196(ovs_vport), flags=0, seq=35, pid=33664,genl(cmd=1,version=1)
2013-12-12T00:03:27Z|00311|dpif|DBG|system at ovs-system: device br0 is on port 1
2013-12-12T00:03:27Z|00312|netlink_socket|DBG|nl_sock_transact_multiple__ (Success): nl(len:40, type=196(ovs_vport), flags=9[REQUEST][ECHO], seq=36, pid=33664,genl(cmd=3,version=1)
2013-12-12T00:03:27Z|00313|netlink_socket|DBG|nl_sock_recv__ (Success): nl(len:124, type=196(ovs_vport), flags=0, seq=36, pid=33664,genl(cmd=1,version=1)
2013-12-12T00:03:27Z|00314|dpif|DBG|system at ovs-system: device p1 is on port 2
2013-12-12T00:03:27Z|00315|netlink_socket|DBG|nl_sock_transact_multiple__ (Success): nl(len:32, type=196(ovs_vport), flags=9[REQUEST][ECHO], seq=37, pid=33664,genl(cmd=2,version=1)
2013-12-12T00:03:27Z|00316|netlink_socket|DBG|nl_sock_recv__ (Success): nl(len:124, type=196(ovs_vport), flags=0, seq=37, pid=33664,genl(cmd=2,version=1)
2013-12-12T00:03:27Z|00317|dpif|DBG|system at ovs-system: port_del(2)
2013-12-12T00:03:27Z|00318|netlink_socket|DBG|nl_sock_transact_multiple__ (Success): nl(len:40, type=196(ovs_vport), flags=9[REQUEST][ECHO], seq=38, pid=33664,genl(cmd=3,version=1)
2013-12-12T00:03:27Z|00319|netlink_socket|DBG|nl_sock_recv__ (Success): nl(len:60, type=2(error), flags=0, seq=38, pid=33664 error(-19(No such device), in-reply-to(nl(len:40, type=196(ovs_vport), flags=9[REQUEST][ECHO], seq=38, pid=33664))
2013-12-12T00:03:27Z|00320|netlink_socket|DBG|received NAK error=0 (No such device)
2013-12-12T00:03:27Z|00321|dpif|DBG|system at ovs-system: failed to query port p1: No such device
2013-12-12T00:03:27Z|00322|netlink_socket|DBG|nl_sock_transact_multiple__ (Success): nl(len:40, type=196(ovs_vport), flags=9[REQUEST][ECHO], seq=39, pid=33664,genl(cmd=3,version=1)
2013-12-12T00:03:27Z|00323|netlink_socket|DBG|nl_sock_recv__ (Success): nl(len:60, type=2(error), flags=0, seq=39, pid=33664 error(-19(No such device), in-reply-to(nl(len:40, type=196(ovs_vport), flags=9[REQUEST][ECHO], seq=39, pid=33664))
2013-12-12T00:03:27Z|00324|netlink_socket|DBG|received NAK error=0 (No such device)
2013-12-12T00:03:27Z|00325|netdev|WARN|could not create netdev p1 of unknown type dummy
2013-12-12T00:03:27Z|00326|bridge|WARN|could not open network device p1 (Address family not supported by protocol)
==33664== Invalid read of size 2
==33664==    at 0x40A1C2: bridge_reconfigure (bridge.c:1568)
==33664==    by 0x406BAC: bridge_run (bridge.c:2289)
==33664==    by 0x40E498: main (ovs-vswitchd.c:118)
==33664==  Address 0x48 is not stack'd, malloc'd or (recently) free'd
==33664== 
==33664== 
==33664== Process terminating with default action of signal 11 (SIGSEGV)
==33664==  Access not within mapped region at address 0x48
==33664==    at 0x40A1C2: bridge_reconfigure (bridge.c:1568)
==33664==    by 0x406BAC: bridge_run (bridge.c:2289)
==33664==    by 0x40E498: main (ovs-vswitchd.c:118)
==33664==  If you believe this happened as a result of a stack
==33664==  overflow in your program's main thread (unlikely but
==33664==  possible), you can try to increase the size of the
==33664==  main thread stack using the --main-stacksize= flag.
==33664==  The main thread stack size used in this run was 8388608.
==33664== 
==33664== HEAP SUMMARY:
==33664==     in use at exit: 125,133 bytes in 858 blocks
==33664==   total heap usage: 14,036 allocs, 13,178 frees, 4,882,832 bytes allocated
==33664== 
==33664== LEAK SUMMARY:
==33664==    definitely lost: 40 bytes in 1 blocks
==33664==    indirectly lost: 0 bytes in 0 blocks
==33664==      possibly lost: 7,792 bytes in 18 blocks
==33664==    still reachable: 117,301 bytes in 839 blocks
==33664==         suppressed: 0 bytes in 0 blocks
==33664== Rerun with --leak-check=full to see details of leaked memory
==33664== 
==33664== For counts of detected and suppressed errors, rerun with: -v
==33664== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 4 from 4)
./start_ovs.sh: line 6: 33664 Killed                  valgrind ovs-vswitchd --pidfile -vdbg

The offending line is:

            if (iface->ofp_port == OFPP_LOCAL) {

Seems like iface is NULL (if offset of odp_port == 0x48) in this case.

  Jarno




More information about the dev mailing list