default-native: Input/output error (Mac OS X)

Hi, I'm trying to get the default-native project up & running to get accustomed to RIOT OS. Unfortunately, txtsnd fails and I can't figure out the source of my error. When I try to send a message to my second RIOT instance I get the following output:

id

id Current id: 0

txtsnd 1 hi

txtsnd 1 hi [nativenet] Sending packet of length 3 to 1: hi nativenet_send: Sending packet of length 3 from 0 to 1 send_buf: Sending packet of length 3 from 0 to 1 padding data! (9 ->26) send_buf: trying to send 26 bytes default-native.elf: write: Input/output error default-native.elf: nativenet_send: error sending packet [nativenet] Packet sent: 0

(obviously, my hi never reaches 1 . ) I've compiled the default-native project with -I/opt/local/include/ -O0 -g -W -Wextra -Wc++-compat -pedantic. Strangely, when I tried to find out where exactly the I/O error occurs by invoking

sudo gdb program 9963

(with 9963 being 0's PID), adding a breakpoint to tap.c:141 and stepping through the execution of txtsnd 1 ohai, the I/O error disappeared:

txtsnd 1 ohai

txtsnd 1 ohai [nativenet] Sending packet of length 5 to 1: ohai nativenet_send: Sending packet of length 5 from 0 to 1 send_buf: Sending packet of length 5 from 0 to 1 padding data! (11 ->26) send_buf: trying to send 26 bytes [nativenet] Packet sent: 1

(my message still didn't reach 1).

I can see the packets at bridge1234 in my Wireshark capture. I'm running Mac OS X 10.75, with tuntapx installed.

It may very well be that the error occurs because of some misconfiguration in my system, but I am out of ideas on how to locate said misconfiguration. I'd be very grateful for any help.

With kind regards, Lotte

Hi,

maybe you can give this a shot: https://github.com/RIOT-OS/RIOT/pull/199

I'll look into the PR and your issue tomorrow, but you could try the (tiny) patch beforehand, at least the code is on your path.

Other than that there are some fixes in the works, you could check out this branch, it's a little hackish and it's untested in OSX: https://github.com/LudwigOrtmann/RIOT/tree/native_fix_syscall_segfault

Cheers, Ludwig

Hi Ludwig,

Hi,

maybe you can give this a shot: https://github.com/RIOT-OS/RIOT/pull/199

I'll do that, thanks!

I'll look into the PR and your issue tomorrow, but you could try the (tiny) patch beforehand, at least the code is on your path.

Other than that there are some fixes in the works, you could check out this branch, it's a little hackish and it's untested in OSX: https://github.com/LudwigOrtmann/RIOT/tree/native_fix_syscall_segfault

Christian already advised me to try it, unfortunately it didn't help…

Chers, Lotte

P.S.: You did read the part of the README where it says you are supposed to signal the the receiving process manually in OSX?

As far as I could tell tuntaposx doesn't implement the system call that configures the interface to send a signal if data is available. Therefore your receiving instance won't notice there is data available unless you tell it yourself. An issue for that already exists :wink:

Cheers, Ludwig