Re: [UDT] OSX compilation errors
Brought to you by:
lilyco
From: Yunhong Gu <yu...@la...> - 2006-03-16 19:28:38
|
Hi Ben, Yes, it is because the endianess problem. UDT does not translate byte order of application data, so if you want to transfer data between machines with different endianess, you need to modify the application a little bit to do the conversion by yourself. The sendfile and recvfile exchange the file size information, which is an integer value that needs the conversion in this case. UDT only translates its own packet header and control information in order to communicate between different systems. Thanks Yunhong On Wed, 15 Mar 2006, Ben Roeder wrote: > I have changed the socket buffers, and have been doing some experiments, > used sysctl -w kern.ipc.maxsockbuf= > > I have 2 osx machines, I can using the test tools ( sendfile and > recvfile ) I can transfer on the same machine. > ie sendfile > and > recvfile 127.0.01 9000 ./iso goo.iso > >> From one osx machine to the other I have some problems but am looking > into that, ruled out any layer2 problems, so am looking further into it. > > More interestingly I have two Linux machines and get good speeds between > them, esp in High BDP enviroments ( 150ms +), however using the same > version of the code, from osx to linux and linux to osx I get > Segmentation fault :-(. I guess this could be a Big Endian Little Endian > problem. The sendfile end is the end that seg faults each time. > > I have tested with appserver and appclient and that does work osx to > linux and linux to osx, so I am guessing the bug is in sendfile, any > thoughts ? > > regards > Ben Roeder > > Yunhong Gu wrote: >> >> Yes, this is a known issue too (I should have add a known issue list...) >> >> The reason is that UDT tries to allocate a rather large socket buffer >> (setsockopt) that OS X does not support. On Linux or Windows, they will >> set the socket buffer to the maximum system value; however, OS X will >> return error. >> >> So the solution is, you can either change your system parameter to allow >> larger socket buffer size (at least 20MB), or set UDT option (UDT_SNDBUF >> and UDT_RCVBUF) to smaller values (e.g., 64KB). See the commented >> setsockopt lines in appserver and appclient for examples. >> >> Thanks >> Yunhong >> >> >> On Wed, 15 Mar 2006, Ben Roeder wrote: >> >>> Hi Yunhong, >>> Thanks for that, I now can compile the 2.3 under OS X >>> The issue I am now seeing is >>> ./recvfile 10.99.4.70 9000 ./iso.iso iso.iso >>> connect: Connection setup failure: unable to create/configure UDP >>> socket: No buffer space available. >>> >>> I am looking into it, but is this also a known issue, or am I the only >>> person on Os X. I remember it used to compile and work before xmas >>> >>> regards >>> Ben Roeder >>> >>> Yunhong Gu wrote: >>> >>>> >>>> >>>> in ./src/channel.cpp, around line 66, remove >>>> >>>> #define socklen_t int >>>> >>>> for BSD. >>>> >>>> OS X has started to use socklen_t instead of int. >>>> >>>> There may be more problem, if so, in ./src/Makefile >>>> >>>> use >>>> $(C++) -dynamiclib -o libudt.dylib -lstdc++ -lpthread -lm $^ >>>> to replace the original "libtool ..." line. >>>> >>>> Thanks, >>>> Yunhong >>>> >>>> >>>> On Wed, 15 Mar 2006, Ben Roeder wrote: >>>> >>>>> Hi, >>>>> Is anyone else compiling for OSX at the moment ? >>>>> I am getting errors with version 2.3 >>>>> I am compiling on a powerPC machine running tiger >>>>> the xcode version is 2.0 >>>>> xcode IDE 514.0 >>>>> xcode core 515.0 >>>>> tool support 514.0 >>>>> >>>>> I am compiling with gcc in a terminal >>>>> gcc is >>>>> Usage: powerpc-apple-darwin8-gcc-4.0.0 >>>>> The make flags are as follows >>>>> make -e os=BSD arch=POWERPC >>>>> >>>>> I see the following error, is this known issue ? >>>>> channel.cpp is version 1.20 >>>>> ~/projects/udt2 ben$ make -e os=BSD arch=POWERPC >>>>> make -C src all >>>>> g++ -fPIC -Wall -DBSD -finline-functions -DTRACE -DNO_BUSY_WAITING >>>>> -mcpu=powerpc channel.cpp -c >>>>> channel.cpp: In member function `int CChannel::recvfrom(CPacket&, >>>>> sockaddr*) const': >>>>> channel.cpp:301: error: invalid conversion from 'int*' to 'socklen_t*' >>>>> channel.cpp:301: error: initializing argument 6 of 'ssize_t >>>>> recvfrom(int, void*, size_t, int, sockaddr*, socklen_t*)' >>>>> channel.cpp: In member function `int CChannel::getSndBufSize()': >>>>> channel.cpp:344: error: invalid conversion from 'int*' to 'socklen_t*' >>>>> channel.cpp:344: error: initializing argument 5 of 'int >>>>> getsockopt(int, int, int, void*, socklen_t*)' >>>>> channel.cpp: In member function `int CChannel::getRcvBufSize()': >>>>> channel.cpp:357: error: invalid conversion from 'int*' to 'socklen_t*' >>>>> channel.cpp:357: error: initializing argument 5 of 'int >>>>> getsockopt(int, int, int, void*, socklen_t*)' >>>>> channel.cpp: In member function `void >>>>> CChannel::getSockAddr(sockaddr*) const': >>>>> channel.cpp:380: error: invalid conversion from 'int*' to 'socklen_t*' >>>>> channel.cpp:380: error: initializing argument 3 of 'int >>>>> getsockname(int, sockaddr*, socklen_t*)' >>>>> channel.cpp: In member function `void >>>>> CChannel::getPeerAddr(sockaddr*) const': >>>>> channel.cpp:391: error: invalid conversion from 'int*' to 'socklen_t*' >>>>> channel.cpp:391: error: initializing argument 3 of 'int >>>>> getpeername(int, sockaddr*, socklen_t*)' >>>>> make[1]: *** [channel.o] Error 1 >>>>> make: *** [src.all] Error 2 >>>>> >>>>> same version is fine on debian sarge >>>>> regards >>>>> Ben Roeder >>>>> >>>>> >>>>> ------------------------------------------------------- >>>>> This SF.Net email is sponsored by xPML, a groundbreaking scripting >>>>> language >>>>> that extends applications into web and mobile media. Attend the live >>>>> webcast >>>>> and join the prime developer group breaking into this new coding >>>>> territory! >>>>> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 >>>>> >>>>> _______________________________________________ >>>>> UDT-general mailing list >>>>> UDT...@li... >>>>> https://lists.sourceforge.net/lists/listinfo/udt-general >>>>> >>>> >>>> >>>> ------------------------------------------------------- >>>> This SF.Net email is sponsored by xPML, a groundbreaking scripting >>>> language >>>> that extends applications into web and mobile media. Attend the live >>>> webcast >>>> and join the prime developer group breaking into this new coding >>>> territory! >>>> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 >>>> _______________________________________________ >>>> UDT-general mailing list >>>> UDT...@li... >>>> https://lists.sourceforge.net/lists/listinfo/udt-general >>> >>> >>> -- >>> ------------------------------------------------------- >>> Sohonet ltd http://www.sohonet.co.uk >>> Tel:+44(0)20 7079 2440 Fax:+44(0)20 7079 2441 >>> Sup:+44(0)20 7079 2449 Aus:+61(0)42 1427 226 >>> Taking digital sound and vision to the world since 1995 >>> ------------------------------------------------------- >>> >>> >> >> >> ------------------------------------------------------- >> This SF.Net email is sponsored by xPML, a groundbreaking scripting language >> that extends applications into web and mobile media. Attend the live >> webcast >> and join the prime developer group breaking into this new coding territory! >> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 >> _______________________________________________ >> UDT-general mailing list >> UDT...@li... >> https://lists.sourceforge.net/lists/listinfo/udt-general > > > |