The attached test case creates a socket file /tmp/mysocket and tries to rename it to /tmp/newsocket. But the new name is actually /tmp/newsocket.lnk: $ gcc -o rename_socket rename_socket.c $ ./rename_socket.exe $ ls -F /tmp/newsocket* /tmp/newsocket.lnk= I think I have a simple fix, which I'll send to cygwin-patches shortly. Ken