现象
fastgpt-code-sandbox 镜像v4.15.0在群晖NAS环境部署时,容器启动后反复打印警告日志:Python warm child failed: load seccomp filter: operation canceled,最终容器异常退出或不断重启,无法正常提供代码执行沙箱服务。同环境下v4.14.15版本的镜像可正常启动运行。
可能原因
该问题由v4.15.0新增的Python沙箱seccomp加固机制导致。沙箱通过python-seccomp库为预热子进程加载seccomp-BPF过滤规则,调用f.load()时默认使用SECCOMP_FILTER_FLAG_TSYNC模式同步规则到所有线程。部分定制精简内核(如群晖DSM定制内核)对该多线程同步模式支持不完整,触发ECANCELED错误,对应日志中的operation canceled。
排查步骤
- 执行命令
uname -r获取宿主机内核版本信息。 - 查看fastgpt-code-sandbox容器的日志,确认是否出现
Python warm child failed: load seccomp filter: operation canceled报错。 - 对比同配置下v4.14.15版本镜像的运行状态,验证是否为v4.15.0版本特有问题。
解决与验证
目前可通过临时回退镜像版本至v4.14.15解决该问题,步骤如下:
- 修改docker-compose配置文件中fastgpt-code-sandbox的镜像标签,将
v4.15.0替换为v4.14.15。 - 执行
docker-compose up -d重新部署服务。 - 等待容器启动完成后,查看容器日志确认无报错,验证沙箱服务正常运行。
需注意,该临时方案仅针对当前已知的seccomp多线程同步兼容问题,后续可关注官方版本更新以获取适配新版内核的修复。