Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.Sign up
GitHub is where the world builds software
Millions of developers and companies build, ship, and maintain their software on GitHub — the largest and most advanced development platform in the world.
syscall: linux/386 socketcall uintptr #7169
This looks suspect for precise GC: // On x86 Linux, all the socket calls go through an extra indirection, // I think because the 5-register system call interface can't handle // the 6-argument calls like sendto and recvfrom. Instead the // arguments to the underlying system call are the number below // and a pointer to an array of uintptr. We hide the pointer in the // socketcall assembly to avoid allocation on every system call. const ( // see linux/net.h _SOCKET = 1 _BIND = 2 _CONNECT = 3 _LISTEN = 4 _ACCEPT = 5 _GETSOCKNAME = 6 _GETPEERNAME = 7 _SOCKETPAIR = 8 _SEND = 9 _RECV = 10 _SENDTO = 11 _RECVFROM = 12 _SHUTDOWN = 13 _SETSOCKOPT = 14 _GETSOCKOPT = 15 _SENDMSG = 16 _RECVMSG = 17 _ACCEPT4 = 18 _RECVMMSG = 19 _SENDMMSG = 20 ) func socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err Errno) func rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err Errno)
Related: http://build.golang.org/log/47cb3e4ed7ea45d74ada437a8dfbec552a7f59c7 crash and email thread [golang-dev] dragonfly-386 broken by runtime: fix specials deadlock
False alarm. socketcall and rawsocketcall are NOSPLIT: TEXT ·socketcall(SB),NOSPLIT,$0-40 TEXT ·rawsocketcall(SB),NOSPLIT,$0-40 So there should be no preemptions to do a GC. I see no callers of socketcall or rawsocketcall that have a pointer disappear into a uintptr over a pre-emptable function call. I think this is now fully fixed by revision 87208c254908.
Owner changed to @bradfitz.
Status changed to Fixed.