Hello, Svante Signell, on Sun 13 Mar 2016 14:19:35 +0100, wrote: > Running the code reveals that the current implementation in glibc is buggy: > > ./scm_rights+creds_recv > Number of SCM_RIGHTS [<=3], SCM_CREDS [<=2]: [1,1] > Input error: Using defaults: > NRIGHTS = 1, NCREDS = 1 > scm_rights+creds_send.c: msgh.msg_controllen = 112 (from control_un) > Receiving via datagram socket > recvmsg: (os/kern) invalid right
I've had a closer look, what happens here is that the mach_port_mod_refs() call on the rendezvous port fails because the port type of the rendezvous port is DEADNAME, i.e. the other end dropped the port. Indeed, your sending program terminates as soon as it has sent its message. You need to make it wait at least a bit for the receiver to get to receive the credentials. Samuel

