Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ethswctld runtime error with openvswitch 2.7.90 on debian stretch #84

Open
rburkholder opened this issue May 10, 2017 · 2 comments
Open

Comments

@rburkholder
Copy link

rburkholder commented May 10, 2017

I was hoping I could build and run the example and see some results. But, sigh, no.

Being totally new to the code, I am unfamiliar with the threads and messages.

Might there be someone experienced be able to quickly provide an indication of the issue?

(gdb) info source
Current source file is ../../../../src/rofl/common/crofconn.cc
Compilation directory is /home/vagrant/rofl-common/build/src/rofl/common
Located in /home/vagrant/rofl-common/src/rofl/common/crofconn.cc
Contains 1973 lines.
Source language is c++.
Producer is GNU C++11 6.3.0 20170425 -mtune=generic -march=x86-64 -g -g -O2 -O0 -std=c++11 -fno-inline -fPIC.
Compiled with DWARF 2 debugging format.
gdb) r
Starting program: /home/vagrant/rofl-common/build/examples/ethswctld/ethswctld
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7ffff5bde700 (LWP 27149)]
[New Thread 0x7ffff53dd700 (LWP 27150)]
[New Thread 0x7ffff4bdc700 (LWP 27151)]
[New Thread 0x7fffeffff700 (LWP 27152)]
[New Thread 0x7fffef7fe700 (LWP 27153)]
[New Thread 0x7fffeeffd700 (LWP 27155)]
[cetherswitch] datapath attached, dptid: 0
[cetherswitch] caught some exception, use debugger for getting more info
<cofmsg version: 4 type: 10 length: 84(wire: 84) xid: 0x0 >
<cofmsg_packet_in >
<buffer-id:-1 >
<total-len:42 >
<reason:no match  >
<table-id: 0 >
<cookie: 0x0 >
<cofmatch ofp-version:4 >
<type: 1 >
<coxmatches #matches:1 >
<id: 0x80000000 >
<coxmatch oxm_id: 0x80000004 class: 0x8000 field: 0x0 hasmask: 0 length: 4>
<in-port: 0x1 >
<cpacket data:0x7fffe8001160 datalen:42 head:64 tail:256>
0000: ff ff ff ff ff ff 7e 7a   dd f9 85 02 08 06 00 01   08 00 06 04 00 01 7e 7a   dd f9 85 02 0a 00 00 01
0001: 00 00 00 00 00 00 0a 00   00 02
ethswctld: ../../../examples/ethswctld/cetherswitch.cc:285: virtual void rofl::examples::ethswctld::cetherswitch::handle_packet_in(rofl::crofdpt&, const rofl::cauxid&, rofl::openflow::cofmsg_packet_in&): Assertion `0' failed.

Thread 6 "crofconn" received signal SIGABRT, Aborted.
[Switching to Thread 0x7fffef7fe700 (LWP 27153)]
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
51	../sysdeps/unix/sysv/linux/raise.c: No such file or directory.

(gdb) info stack
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1  0x00007ffff647e3fa in __GI_abort () at abort.c:89
#2  0x00007ffff6475e37 in __assert_fail_base (fmt=<optimized out>, assertion=assertion@entry=0x55555575f194 "0",
    file=file@entry=0x55555575f168 "../../../examples/ethswctld/cetherswitch.cc", line=line@entry=285,
    function=function@entry=0x55555575f2a0 <rofl::examples::ethswctld::cetherswitch::handle_packet_in(rofl::crofdpt&, rofl::cauxid const&, rofl::openflow::cofmsg_packet_in&)::__PRETTY_FUNCTION__> "virtual void rofl::examples::ethswctld::cetherswitch::handle_packet_in(rofl::crofdpt&, const rofl::cauxid&, rofl::openflow::cofmsg_packet_in&)") at assert.c:92
#3  0x00007ffff6475ee2 in __GI___assert_fail (assertion=0x55555575f194 "0", file=0x55555575f168 "../../../examples/ethswctld/cetherswitch.cc", line=285,
    function=0x55555575f2a0 <rofl::examples::ethswctld::cetherswitch::handle_packet_in(rofl::crofdpt&, rofl::cauxid const&, rofl::openflow::cofmsg_packet_in&)::__PRETTY_FUNCTION__> "virtual void rofl::examples::ethswctld::cetherswitch::handle_packet_in(rofl::crofdpt&, const rofl::cauxid&, rofl::openflow::cofmsg_packet_in&)")
    at assert.c:101
#4  0x00005555555813ec in rofl::examples::ethswctld::cetherswitch::handle_packet_in (this=0x7fffffffdba0, dpt=..., auxid=..., msg=...)
    at ../../../examples/ethswctld/cetherswitch.cc:285
#5  0x00005555556964f8 in rofl::crofdpt::packet_in_rcvd (this=0x7fffe8000ad0, auxid=..., msg=0x7fffe80014e0) at ../../../../src/rofl/common/crofdpt.cc:690
#6  0x00005555556944a9 in rofl::crofdpt::handle_recv (this=0x7fffe8000ad0, chan=..., conn=..., msg=0x7fffe80014e0) at ../../../../src/rofl/common/crofdpt.cc:121
#7  0x0000555555690a9c in rofl::crofchan::handle_recv (this=0x7fffe8000ae8, conn=..., msg=0x7fffe80014e0)
    at /home/vagrant/rofl-common/build/../src/rofl/common/crofchan.h:525
#8  0x0000555555627cd3 in rofl::crofconn::handle_rx_messages (this=0x7ffff0000970) at ../../../../src/rofl/common/crofconn.cc:1227
#9  0x00005555556277f0 in rofl::crofconn::handle_wakeup (this=0x7ffff0000970, thread=...) at ../../../../src/rofl/common/crofconn.cc:1168
#10 0x00005555556c7cb9 in rofl::cthread::run_loop (this=0x7ffff0000988) at ../../../../src/rofl/common/cthread.cpp:459
#11 0x00005555556c84c6 in rofl::cthread::start_loop (arg=0x7ffff0000988) at ../../../../src/rofl/common/cthread.hpp:210
#12 0x00007ffff79bb494 in start_thread (arg=0x7fffef7fe700) at pthread_create.c:333
#13 0x00007ffff653293f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97
@rburkholder
Copy link
Author

I did a step and found out where it is happening:

(gdb)
rofl::openflow::coxmatches::get_ofb_eth_src (this=0x7fffe80015d8) at /home/vagrant/rofl-common/build/../src/rofl/common/openflow/coxmatches.h:494
494	      throw eOxmInval("coxmatches::get_ofb_eth_src() not found");
(gdb)


rofl::openflow::eOxmInval::eOxmInval (this=0x7fffe0000a90, __arg="coxmatches::get_ofb_eth_src() not found")
    at /home/vagrant/rofl-common/build/../src/rofl/common/openflow/coxmatch.h:38
38	  eOxmInval(const std::string &__arg) : eOxmBase(__arg){};
(gdb)
rofl::openflow::eOxmBase::eOxmBase (this=0x7fffe0000a90, __arg="coxmatches::get_ofb_eth_src() not found")
    at /home/vagrant/rofl-common/build/../src/rofl/common/openflow/coxmatch.h:34
34	  eOxmBase(const std::string &__arg) : exception(__arg){};
(gdb)
rofl::exception::exception (this=0x7fffe0000a90, __arg="coxmatches::get_ofb_eth_src() not found") at /home/vagrant/rofl-common/build/../src/rofl/common/exception.hpp:29
29	  exception(const std::string &__arg) : std::runtime_error(__arg){};
(gdb)

Now to figure out what it means.

@toanju
Copy link
Contributor

toanju commented Jun 14, 2017

It seems OVS has another spec violation here. Using OF 1.3 a datapath should set these fields.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants