文章归档

pid namespaces销毁触发内核crash

最近在测试pid namespaces的过程中发现一个问题:就是当机器OOM的时候,杀掉了一个有pid namespace的进程,这个进程在回收的过程中,触发了内核crash

内核crash的地方是在回收进程pid的时候踩了空指针,内核版本是2.6.32

所以在低版本内核中,如果pid namespace使用不正确,可能会带来致命的稳定性问题

pid namespace是实现容器的基础技术之一,docker和lxc中都使用了pid namespace来为容器提供独立隔离的进程体系,实现容器之间的PID隔离,但是我看了一下docker和lxc的实现,实现方式很简单,在低版本内核上是极有可能触发这个bug的,我们来了解一下docker和lxc的进程隔离实现方案

关于pid namespace的实现原理,可以参考: Namespaces in operation, part 3: PID namespaces

»» 继续阅读全文