This is a Go wrapper for libutp.
anacrolix / go-libutp Goto Github PK
View Code? Open in Web Editor NEWGo wrapper of libutp reference uTP C implementation
Home Page: https://github.com/bittorrent/libutp
License: MIT License
Go wrapper of libutp reference uTP C implementation
Home Page: https://github.com/bittorrent/libutp
License: MIT License
This is a Go wrapper for libutp.
Getting crashes, coming from libutp, looks like connectivity problem is causing it.
Here is the log part.
07:51:14.868 T:140043090876160 NOTICE: [plugin.video.elementum] elementum: /ext-go/2/src/github.com/anacrolix/go-libutp/utp_internal.cpp:3314: int utp_getpeername(utp_socket*, sockaddr*, socklen_t*): Assertion `conn' failed.
07:51:15.874 T:140043090876160 NOTICE: [plugin.video.elementum]
07:51:15.874 T:140043090876160 NOTICE: [plugin.video.elementum] PC=0x7fc0019d90bb m=7 sigcode=18446744073709551610
07:51:15.875 T:140043090876160 NOTICE: [plugin.video.elementum] signal arrived during cgo execution
07:51:15.875 T:140043090876160 NOTICE: [plugin.video.elementum]
07:51:15.876 T:140043090876160 NOTICE: [plugin.video.elementum] goroutine 10768 [syscall, locked to thread]:
07:51:15.877 T:140043090876160 NOTICE: [plugin.video.elementum] runtime.cgocall(0xb9be00, 0xc420d62b30, 0x1)
07:51:15.877 T:140043090876160 NOTICE: [plugin.video.elementum] /usr/local/go/src/runtime/cgocall.go:131 +0xe2 fp=0xc420d62b00 sp=0xc420d62ac0
07:51:15.878 T:140043090876160 NOTICE: [plugin.video.elementum] github.com/anacrolix/go-libutp._Cfunc_utp_getpeername(0x0, 0xc421148cb0, 0xc4203c0f38, 0x0)
07:51:15.878 T:140043090876160 NOTICE: [plugin.video.elementum] github.com/anacrolix/go-libutp/_obj/_cgo_gotypes.go:294 +0x4d fp=0xc420d62b30 sp=0xc420d62b00
07:51:15.882 T:140043090876160 NOTICE: [plugin.video.elementum] github.com/anacrolix/go-libutp.(*Conn).RemoteAddr.func1(0x0, 0xc421148cb0, 0xc4203c0f38, 0xd0eae0)
07:51:15.883 T:140043090876160 NOTICE: [plugin.video.elementum] /ext-go/2/src/github.com/anacrolix/go-libutp/conn.go:196 +0x74 fp=0xc420d62b68 sp=0xc420d62b30
07:51:15.883 T:140043090876160 NOTICE: [plugin.video.elementum] github.com/anacrolix/go-libutp.(*Conn).RemoteAddr(0xc42060ab40, 0x1432790, 0xc4226debd0)
07:51:15.884 T:140043090876160 NOTICE: [plugin.video.elementum] /ext-go/2/src/github.com/anacrolix/go-libutp/conn.go:197 +0x76 fp=0xc420d62ba8 sp=0xc420d62b68
07:51:15.884 T:140043090876160 NOTICE: [plugin.video.elementum] github.com/anacrolix/torrent.(*connection).remoteAddr(0xc4200c7b80, 0x13, 0xc42332f620)
07:51:15.885 T:140043090876160 NOTICE: [plugin.video.elementum] /ext-go/2/src/github.com/anacrolix/torrent/connection.go:111 +0x34 fp=0xc420d62bd0 sp=0xc420d62ba8
07:51:15.885 T:140043090876160 NOTICE: [plugin.video.elementum] github.com/anacrolix/torrent.(*Torrent).addrActive(0xc4206c7680, 0xc42332f620, 0x13, 0x5)
07:51:15.886 T:140043090876160 NOTICE: [plugin.video.elementum] /ext-go/2/src/github.com/anacrolix/torrent/torrent.go:205 +0xdd fp=0xc420d62c70 sp=0xc420d62bd0
07:51:15.892 T:140043090876160 NOTICE: [plugin.video.elementum] github.com/anacrolix/torrent.(*Client).initiateConn(0xc420219880, 0x0, 0x0, 0x0, 0xc420f07234, 0x4, 0x4, 0x9fd6, 0xe37ef1, 0x1, ...)
07:51:15.893 T:140043090876160 NOTICE: [plugin.video.elementum] /ext-go/2/src/github.com/anacrolix/torrent/client.go:513 +0x1d0 fp=0xc420d62d50 sp=0xc420d62c70
07:51:15.905 T:140043090876160 NOTICE: [plugin.video.elementum] github.com/anacrolix/torrent.(*Client).openNewConns(0xc420219880, 0xc4206c7680)
07:51:15.908 T:140043090876160 NOTICE: [plugin.video.elementum] /ext-go/2/src/github.com/anacrolix/torrent/client.go:1185 +0x227 fp=0xc420d62ee0 sp=0xc420d62d50
07:51:15.909 T:140043090876160 NOTICE: [plugin.video.elementum] github.com/anacrolix/torrent.(*Client).noLongerHalfOpen(0xc420219880, 0xc4206c7680, 0xc422d0b6e0, 0x13)
07:51:15.910 T:140043090876160 NOTICE: [plugin.video.elementum] /ext-go/2/src/github.com/anacrolix/torrent/client.go:598 +0xb6 fp=0xc420d62f40 sp=0xc420d62ee0
07:51:15.912 T:140043090876160 NOTICE: [plugin.video.elementum] github.com/anacrolix/torrent.(*Client).outgoingConnection(0xc420219880, 0xc4206c7680, 0xc422d0b6e0, 0x13, 0xe37ef1, 0x1)
07:51:15.913 T:140043090876160 NOTICE: [plugin.video.elementum] /ext-go/2/src/github.com/anacrolix/torrent/client.go:686 +0xdf fp=0xc420d62fb0 sp=0xc420d62f40
07:51:15.919 T:140043090876160 NOTICE: [plugin.video.elementum] runtime.goexit()
07:51:15.921 T:140043090876160 NOTICE: [plugin.video.elementum] /usr/local/go/src/runtime/asm_amd64.s:2197 +0x1 fp=0xc420d62fb8 sp=0xc420d62fb0
07:51:15.921 T:140043090876160 NOTICE: [plugin.video.elementum] created by github.com/anacrolix/torrent.(*Client).initiateConn
07:51:15.922 T:140043090876160 NOTICE: [plugin.video.elementum] /ext-go/2/src/github.com/anacrolix/torrent/client.go:517 +0x2d2
07:51:15.924 T:140043090876160 NOTICE: [plugin.video.elementum]
07:51:15.925 T:140043090876160 NOTICE: [plugin.video.elementum] goroutine 1 [IO wait, 1 minutes]:
07:51:15.926 T:140043090876160 NOTICE: [plugin.video.elementum] net.runtime_pollWait(0x7fc002663c00, 0x72, 0x143f1e0)
07:51:15.926 T:140043090876160 NOTICE: [plugin.video.elementum] /usr/local/go/src/runtime/netpoll.go:164 +0x59
07:51:15.927 T:140043090876160 NOTICE: [plugin.video.elementum] net.(*pollDesc).wait(0xc4201ce7d8, 0x72, 0x143a010, 0xc4204132c0)
07:51:15.928 T:140043090876160 NOTICE: [plugin.video.elementum] /usr/local/go/src/net/fd_poll_runtime.go:75 +0x38
07:51:15.942 T:140043090876160 NOTICE: [plugin.video.elementum] net.(*pollDesc).waitRead(0xc4201ce7d8, 0xffffffffffffffff, 0x0)
07:51:15.942 T:140043090876160 NOTICE: [plugin.video.elementum] /usr/local/go/src/net/fd_poll_runtime.go:80 +0x34
07:51:15.942 T:140043090876160 NOTICE: [plugin.video.elementum] net.(*netFD).accept(0xc4201ce770, 0x0, 0x143d6e0, 0xc4204132c0)
07:51:15.943 T:140043090876160 NOTICE: [plugin.video.elementum] /usr/local/go/src/net/fd_unix.go:430 +0x1e5
07:51:15.943 T:140043090876160 NOTICE: [plugin.video.elementum] net.(*TCPListener).accept(0xc4201995a0, 0xc4205ce3a0, 0xd017a0, 0xffffffffffffffff)
07:51:15.944 T:140043090876160 NOTICE: [plugin.video.elementum] /usr/local/go/src/net/tcpsock_posix.go:136 +0x2e
07:51:15.944 T:140043090876160 NOTICE: [plugin.video.elementum] net.(*TCPListener).AcceptTCP(0xc4201995a0, 0xc4207a3cb8, 0xc4207a3cc0, 0xc4207a3cb0)
07:51:15.946 T:140043090876160 NOTICE: [plugin.video.elementum] /usr/local/go/src/net/tcpsock.go:215 +0x49
07:51:15.946 T:140043090876160 NOTICE: [plugin.video.elementum] net/http.tcpKeepAliveListener.Accept(0xc4201995a0, 0xe676a0, 0xc4205ce320, 0x14441e0, 0xc420559380)
07:51:15.947 T:140043090876160 NOTICE: [plugin.video.elementum] /usr/local/go/src/net/http/server.go:3044 +0x2f
07:51:15.955 T:140043090876160 NOTICE: [plugin.video.elementum] net/http.(*Server).Serve(0xc420574210, 0x1443a60, 0xc4201995a0, 0x0, 0x0)
07:51:15.956 T:140043090876160 NOTICE: [plugin.video.elementum] /usr/local/go/src/net/http/server.go:2643 +0x228
07:51:15.956 T:140043090876160 NOTICE: [plugin.video.elementum] net/http.(*Server).ListenAndServe(0xc420574210, 0xc420574210, 0xc4203382a6)
07:51:15.956 T:140043090876160 NOTICE: [plugin.video.elementum] /usr/local/go/src/net/http/server.go:2585 +0xb0
07:51:15.957 T:140043090876160 NOTICE: [plugin.video.elementum] net/http.ListenAndServe(0xc4203382a6, 0x6, 0x0, 0x0, 0x5, 0xc4203382a6)
07:51:15.957 T:140043090876160 NOTICE: [plugin.video.elementum] /usr/local/go/src/net/http/server.go:2787 +0x7f
07:51:15.958 T:140043090876160 NOTICE: [plugin.video.elementum] main.main()
07:51:15.958 T:140043090876160 NOTICE: [plugin.video.elementum] /ext-go/1/src/github.com/elgatito/elementum/main.go:179 +0x9ce
07:51:15.959 T:140043090876160 NOTICE: [plugin.video.elementum]
When I run:
GOOS=windows GOARCH=amd64 go build ucat/main.go
or
GOOS=linux GOARCH=amd64 go build ucat/main.go
It seems to fail with the following error:
# github.com/anacrolix/go-libutp
../../work/src/github.com/anacrolix/go-libutp/status.go:9:2: undefined: mu
../../work/src/github.com/anacrolix/go-libutp/status.go:10:8: undefined: mu
../../work/src/github.com/anacrolix/go-libutp/status.go:11:20: undefined: libContextToSocket
Now I checked out status.go, and it doesn't seem to do much interesting. So after deleting status.go it ends up failing with the following error:
GOOS=windows GOARCH=amd64 go build ucat/main.go
# command-line-arguments
ucat/main.go:16:43: undefined: utp.Socket
ucat/main.go:40:21: undefined: utp.Socket
ucat/main.go:42:11: undefined: utp.NewSocket
ucat/main.go:44:11: undefined: utp.NewSocket
ucat/main.go:53:4: not enough arguments to return
ucat/main.go:55:4: not enough arguments to return
The "undefined: utp.Socket" error is something I myself got when I started using anacrolix/go-libutp instead of anacrolix/utp. Weirdly enough it does compile on DARWIN.
Is there a way to detect if a uTP connection is closed? For example how a Read to a net.Conn will error on TCP connection?
github.com/anacrolix/go-libutp
/github/home/go/pkg/mod/github.com/anacrolix/[email protected]/callbacks.go:16:10: cannot define new methods on non-local type *C.utp_callback_arguments
/github/home/go/pkg/mod/github.com/anacrolix/[email protected]/callbacks.go:24:10: cannot define new methods on non-local type *C.utp_callback_arguments
/github/home/go/pkg/mod/github.com/anacrolix/[email protected]/callbacks.go:28:10: cannot define new methods on non-local type *C.utp_callback_arguments
/github/home/go/pkg/mod/github.com/anacrolix/[email protected]/callbacks.go:32:10: cannot define new methods on non-local type *C.utp_callback_arguments
/github/home/go/pkg/mod/github.com/anacrolix/[email protected]/callbacks.go:36:10: cannot define new methods on non-local type *C.utp_callback_arguments
/github/home/go/pkg/mod/github.com/anacrolix/[email protected]/utp.go:29:12: cannot define new methods on non-local type *C.utp_context
/github/home/go/pkg/mod/github.com/anacrolix/[email protected]/utp.go:40:12: cannot define new methods on non-local type *C.utp_context
make: *** [Makefile:21: app] Error 1
Error: Process completed with exit code 2.
This would probably be done by allowing to hook uses of net.PacketConn.
See anacrolix/torrent#195. Needs a unit test.
Noticed the previous repo pointing to this one. What was the reason for the move?
Hi, I'm trying to use the downstream project https://github.com/anacrolix/torrent and I get the following error when building.
external/com_github_anacrolix_go_libutp/utp_templates.h:69:2: error: 'FORCEINLINE' does not name a type
69 | FORCEINLINE uint16 host_to_network(uint16 i) { return htons(i); }
| ^~~~~~~~~~~
external/com_github_anacrolix_go_libutp/utp_templates.h:70:2: error: 'FORCEINLINE' does not name a type
70 | FORCEINLINE uint32 host_to_network(uint32 i) { return htonl(i); }
| ^~~~~~~~~~~
external/com_github_anacrolix_go_libutp/utp_templates.h:71:2: error: 'FORCEINLINE' does not name a type
71 | FORCEINLINE int32 host_to_network(int32 i) { return htonl(i); }
| ^~~~~~~~~~~
external/com_github_anacrolix_go_libutp/utp_templates.h:72:2: error: 'FORCEINLINE' does not name a type
72 | FORCEINLINE uint16 network_to_host(uint16 i) { return ntohs(i); }
| ^~~~~~~~~~~
external/com_github_anacrolix_go_libutp/utp_templates.h:73:2: error: 'FORCEINLINE' does not name a type
73 | FORCEINLINE uint32 network_to_host(uint32 i) { return ntohl(i); }
| ^~~~~~~~~~~
external/com_github_anacrolix_go_libutp/utp_templates.h:74:2: error: 'FORCEINLINE' does not name a type
74 | FORCEINLINE int32 network_to_host(int32 i) { return ntohl(i); }
| ^~~~~~~~~~~
external/com_github_anacrolix_go_libutp/utp_templates.h: In member function 'T big_endian<T>::operator=(T)':
external/com_github_anacrolix_go_libutp/utp_templates.h:80:38: error: 'host_to_network' is not a member of 'aux'
80 | T operator=(T i) { m_integer = aux::host_to_network(i); return i; }
| ^~~~~~~~~~~~~~~
external/com_github_anacrolix_go_libutp/utp_templates.h: In member function 'big_endian<T>::operator T() const':
external/com_github_anacrolix_go_libutp/utp_templates.h:81:35: error: 'network_to_host' is not a member of 'aux'
81 | operator T() const { return aux::network_to_host(m_integer); }
| ^~~~~~~~~~~~~~~
external/com_github_anacrolix_go_libutp/utp_templates.h: At global scope:
external/com_github_anacrolix_go_libutp/utp_templates.h:100:29: error: 'FORCEINLINE' does not name a type
100 | template<typename T> static FORCEINLINE void QuickSortT(T *base, size_t num, int (*comp)(const T *, const T *)) { qsort(base, num, sizeof(T), (SortCompareProc*)comp); }
| ^~~~~~~~~~~
In file included from external/com_github_anacrolix_go_libutp/utp_internal.h:36,
from external/com_github_anacrolix_go_libutp/utp_api.cpp:26:
external/com_github_anacrolix_go_libutp/utp_packedsockaddr.h:49:17: error: 'SOCKADDR_STORAGE' does not name a type
49 | void set(const SOCKADDR_STORAGE* sa, socklen_t len);
| ^~~~~~~~~~~~~~~~
external/com_github_anacrolix_go_libutp/utp_packedsockaddr.h:51:23: error: 'SOCKADDR_STORAGE' does not name a type
51 | PackedSockAddr(const SOCKADDR_STORAGE* sa, socklen_t len);
| ^~~~~~~~~~~~~~~~
external/com_github_anacrolix_go_libutp/utp_packedsockaddr.h:54:2: error: 'SOCKADDR_STORAGE' does not name a type
54 | SOCKADDR_STORAGE get_sockaddr_storage(socklen_t *len) const;
| ^~~~~~~~~~~~~~~~
compilepkg: error running subcommand /usr/bin/gcc: exit status 1
With new go, version 1.9.4, the build fails:
$ go build github.com/anacrolix/go-libutp
go build github.com/anacrolix/go-libutp: invalid flag in #cgo CFLAGS: -fno-exceptions
$
While remaking a transport the transport for libp2p lib I was getting some stream error
under one test, this test was making a lot of connection, after some digging I found these error are coming when some layer tries to read from the Conn object.
Here is my bug reproducing repo :
/ipfs/QmQvCivXZtrK87DgEBK2LJDwYCSiANdVHCsdxaV8n5abFn
To reproduce the bug just build it and start it.
It will create one utp socket on 127.0.0.1:4500
wich accept and start an handler function wich just read and write what it read until the conn die.
After it start 100 goroutine each creating a new socket and dialling the first socket, then sending an array of byte and verifying what was sended and what was received is the same.
Then most of the time (it never not happend to me but the number of times vary a lot, if for you it doesn't trigger maybe try with more dialler (via the test var, also the addr is not used in the dialler (I forgoted to put it also here) so if you must change it change it also in the hi func)).
And you should see some UTP_ECONNRESET
errors.
As you can see that an sample case :
At connector 16 error for reading:
UTP_ECONNRESET
At connector 82 error for reading:
UTP_ECONNRESET
At connector 18 error for reading:
UTP_ECONNRESET
At connector 46 error for reading:
UTP_ECONNRESET
At connector 66 error for reading:
UTP_ECONNRESET
At connector 68 error for reading:
UTP_ECONNRESET
At connector 92 error for reading:
UTP_ECONNRESET
At connector 14 error for reading:
UTP_ECONNRESET
At connector 83 error for reading:
UTP_ECONNRESET
At connector 44 error for reading:
UTP_ECONNRESET
Additionally, check that other state changes that occur are used when waiting for connect.
When doing a download user catched a panic.
Log cut: http://paste.ubuntu.com/26064047/
Full log (if needed): http://dropmefiles.com/DEjYE
slicken@slk:~/ts$ go version
go version go1.14.4 linux/amd64
slicken@slk:~/go/src/github.com/slicken/ts$ go build -o app
# github.com/anacrolix/go-libutp
In file included from utp_api.cpp:26:
utp_internal.h: In constructor ‘UTPSocketKey::UTPSocketKey(const PackedSockAddr&, uint32)’:
utp_internal.h:79:32: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct UTPSocketKey’; use assignment instead [-Wclass-memaccess]
79 | memset(this, 0, sizeof(*this));
| ^
utp_internal.h:74:8: note: ‘struct UTPSocketKey’ declared here
74 | struct UTPSocketKey {
| ^~~~~~~~~~~~
# github.com/anacrolix/go-libutp
In file included from utp_callbacks.h:27,
from utp_callbacks.cpp:25:
utp_internal.h: In constructor ‘UTPSocketKey::UTPSocketKey(const PackedSockAddr&, uint32)’:
utp_internal.h:79:32: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct UTPSocketKey’; use assignment instead [-Wclass-memaccess]
79 | memset(this, 0, sizeof(*this));
| ^
utp_internal.h:74:8: note: ‘struct UTPSocketKey’ declared here
74 | struct UTPSocketKey {
| ^~~~~~~~~~~~
# github.com/anacrolix/go-libutp
In file included from utp_internal.cpp:34:
utp_internal.h: In constructor ‘UTPSocketKey::UTPSocketKey(const PackedSockAddr&, uint32)’:
utp_internal.h:79:32: warning: ‘void* memset(void*, int, size_t)’ clearing an object of non-trivial type ‘struct UTPSocketKey’; use assignment instead [-Wclass-memaccess]
79 | memset(this, 0, sizeof(*this));
| ^
utp_internal.h:74:8: note: ‘struct UTPSocketKey’ declared here
74 | struct UTPSocketKey {
| ^~~~~~~~~~~~
got latest version of go & go-libutp
From @shellus on July 20, 2017 3:38
C:\Users\shellus\go\src\github.com\shellus\untitled>go get github.com/anacrolix/torrent
# github.com/anacrolix/go-libutp
..\..\anacrolix\go-libutp\utp.go:12:1: error: unknown type name 'uint64_t'
uint64_t errorCallback(utp_callback_arguments *);
^~~~~~~~
..\..\anacrolix\go-libutp\utp.go:13:1: error: unknown type name 'uint64_t'
uint64_t logCallback(utp_callback_arguments *);
^~~~~~~~
..\..\anacrolix\go-libutp\utp.go:14:1: error: unknown type name 'uint64_t'
uint64_t acceptCallback(utp_callback_arguments *);
^~~~~~~~
..\..\anacrolix\go-libutp\utp.go:15:1: error: unknown type name 'uint64_t'
uint64_t sendtoCallback(utp_callback_arguments *);
^~~~~~~~
..\..\anacrolix\go-libutp\utp.go:16:1: error: unknown type name 'uint64_t'
uint64_t stateChangeCallback(utp_callback_arguments *);
^~~~~~~~
..\..\anacrolix\go-libutp\utp.go:17:1: error: unknown type name 'uint64_t'
uint64_t readCallback(utp_callback_arguments *);
^~~~~~~~
C:\Users\shellus\go\src\github.com\shellus\untitled>
Copied from original issue: anacrolix/torrent#171
Hello, I'm having issues to compile go-libutp on Mac m1 Ventura
Go Environment:
GO111MODULE=""
GOARCH="arm64"
GOHOSTARCH="arm64"
GOHOSTOS="darwin"
GOINSECURE=""
GOVERSION="go1.18.3"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/Users/simbadmarino/Documents/btfs-sharedLib/go.mod"
GOWORK=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -arch arm64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/89/7_dkrhfd345107kdvp3gk4p40000gn/T/go-build1930779843=/tmp/go-build -gno-record-gcc-switches -fno-common"
Makefile screenshot:
What did I do?
make iOS OR make android
What did I expected?
build is successful
What happened?
ld: building for macOS, but linking in object file built for iOS Simulator, file '/var/folders/89/7_dkrhfd345107kdvp3gk4p40000gn/T/go-build127800418/b955/_cgo_main.o' for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Makefile:19: ios-x86_64] Error 2
ld: warning: ignoring file $WORK/b956/_x005.o, building for macOS-arm64 but attempting to link with file built for unknown-unsupported file format ( 0x7F 0x45 0x4C 0x46 0x01 0x01 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 )
ld: warning: ignoring file $WORK/b956/_cgo_main.o, building for macOS-arm64 but attempting to link with file built for unknown-unsupported file format ( 0x7F 0x45 0x4C 0x46 0x01 0x01 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 )
ld: warning: ignoring file $WORK/b956/_x004.o, building for macOS-arm64 but attempting to link with file built for unknown-unsupported file format ( 0x7F 0x45 0x4C 0x46 0x01 0x01 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 )
ld: warning: ld: warning: ignoring file $WORK/b956/_x001.o, building for macOS-arm64 but attempting to link with file built for unknown-unsupported file format ( 0x7F 0x45 0x4C 0x46 0x01 0x01 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 )ld: warning: ignoring file $WORK/b956/_x003.o, building for macOS-arm64 but attempting to link with file built for unknown-unsupported file format ( 0x7F 0x45 0x4C 0x46 0x01 0x01 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 )
ld: warning: ignoring file $WORK/b956/_x007.o, building for macOS-arm64 but attempting to link with file built for unknown-unsupported file format ( 0x7F 0x45 0x4C 0x46 0x01 0x01 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 )
ld: warning: ignoring file $WORK/b956/_x002.o, building for macOS-arm64 but attempting to link with file built for unknown-unsupported file format ( 0x7F 0x45 0x4C 0x46 0x01 0x01 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 )
ignoring file $WORK/b956/_x006.o, building for macOS-arm64 but attempting to link with file built for unknown-unsupported file format ( 0x7F 0x45 0x4C 0x46 0x01 0x01 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 )
Undefined symbols for architecture arm64:
"_main", referenced from:
implicit entry/start for main executable
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Makefile:33: android-armv7a] Error 2
Any ideas or support is appreciated. I have tried with old go versions and newer and same result.
Hello! I have successfully implemented go-libutp into meshbird (see my fork), but currently I am struggling with UTP_ETIMEOUT. For me it seems like there is too little time for request. While scanning my traffic via Wireshark, I've mentioned that req-resp time could go up to 20 mins. It is a lot of time, but at least something happens. How can I increase time so I may see if it will help me solve the problem I have.
It may be desirable to set a Logger at the Socket or Conn level, per anacrolix/torrent#676.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.