主机 UDS: 在启用 SO_PASSCRED 的 SCM_RIGHTS 导入的套接字上, recvmsg 失败
作者: hansent创建于 2026年9月3日更新于 2026年9月16日
**背景。** 我们正在使用 nvproxy 来评估 gVisor,以在一个节点上运行多个租户的 GPU 视频推理工作负载,通过 NVIDIA MPS 共享 GPU,从而使每个租户都获得设备内存限制。MPS 客户端通过 Unix 套接字与主机端控制守护程序注册,守护程序通过 `SCM_RIGHTS` 将服务器连接传递给每个客户端。从沙箱内部(runsc 自己的 strace)跟踪该握手过程表明,CUDA 客户端在传递的套接字的第一个 `recvmsg` 中死亡;该套接字已启用 `SO_PASSCRED`。下面的内容是该故障的最小、无 GPU 版本,通过逐个消除套接字类型、`MSG_CMSG_CLOEXEC`、嵌套的 `SCM_RIGHTS` 和接收标志来实现(所有这些都有效)。
内容来源: google/gvisor