I've spent a little while trying to figure out why passfd stopped working on my x86-64 system. As far as I can tell, it comes down to random junk in the tmpbuf buffer which is only partially overwritten by the file descriptor assignment. Zeroing out tmpbuf makes things work again. jon --- scgi-1.10/scgi/passfd.c~ 2005-12-06 07:39:26.000000000 -0700 +++ scgi-1.10/scgi/passfd.c 2006-04-13 16:01:21.000000000 -0600 @@ -58,6 +58,7 @@ send_fd (int sockfd, int fd) struct msghdr msg; void* buf[1]; + memset(tmpbuf, 0, CONTROLLEN); iov[0].iov_base = buf; iov[0].iov_len = 1; msg.msg_iov = iov;