Hi, I found a problem to unix domain socket. The unix_gc function removes socket buffers of the socket which is connectted but not acceptted yet. After one process executes "Mark phase" of unix_gc function, another process registers socket buffer by using sendmsg with SCM_RIGHTS. At the next moment, the socket buffer is removed. I attached the test program. When I execute one server and two clients on SMP machine (kernel 2.4.16 and PentiumIII x 2), I can reporduce this problem. Following is a patch to avoid this problem. --- kernel-2.4.16/net/unix/garbage.c.sv Mon Jan 7 15:46:22 2002 +++ kernel-2.4.16/net/unix/garbage.c Mon Jan 7 15:51:22 2002 @@ -279,7 +279,7 @@ /* * Do we have file descriptors ? */ - if(UNIXCB(skb).fp) + if(s->dead && UNIXCB(skb).fp) { __skb_unlink(skb, skb->list); __skb_queue_tail(&hitlist,skb); Regards, Yasuma Takeda