From 5b2b138d24d4370c7bdc8d7e2a230479e569a0bd Mon Sep 17 00:00:00 2001 From: Pradyumna Agrawal Date: Mon, 9 Mar 2020 11:08:11 -0700 Subject: [PATCH] Synchronize the call to linuxContainer.Signal() linuxContainer.Signal() can race with another call to say Destroy() which clears the container's initProcess. This can cause a nil pointer dereference in Signal(). This patch will synchronize Signal() and Destroy() by grabbing the container's mutex as part of the Signal() call. Signed-off-by: Pradyumna Agrawal --- libcontainer/container_linux.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libcontainer/container_linux.go b/libcontainer/container_linux.go index fe70c937a..ae3d39f39 100644 --- a/libcontainer/container_linux.go +++ b/libcontainer/container_linux.go @@ -379,6 +379,8 @@ func (c *linuxContainer) start(process *Process) error { } func (c *linuxContainer) Signal(s os.Signal, all bool) error { + c.m.Lock() + defer c.m.Unlock() if all { return signalAllProcesses(c.cgroupManager, s) }