diff options
author | gVisor bot <gvisor-bot@google.com> | 2021-02-24 11:47:27 -0800 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2021-02-24 11:47:27 -0800 |
commit | 8f6274404a87aa6adb2c8f322b9ee7aae2589fba (patch) | |
tree | 817907f6d65ecbf124a4ee58231567f1ca2ba3bd | |
parent | 055073f11813a7b675cb19aa6c540a667cd746a5 (diff) | |
parent | 306a9477daa7b57ef62133bcf3f2f5966e26ffca (diff) |
Merge pull request #5519 from dqminh:runsc-ps-pids
PiperOrigin-RevId: 359334029
-rw-r--r-- | pkg/sentry/control/proc.go | 4 | ||||
-rw-r--r-- | runsc/container/multi_container_test.go | 27 |
2 files changed, 16 insertions, 15 deletions
diff --git a/pkg/sentry/control/proc.go b/pkg/sentry/control/proc.go index f93bd64e0..367849e75 100644 --- a/pkg/sentry/control/proc.go +++ b/pkg/sentry/control/proc.go @@ -334,8 +334,8 @@ func PrintPIDsJSON(pl []*Process) (string, error) { func Processes(k *kernel.Kernel, containerID string, out *[]*Process) error { ts := k.TaskSet() now := k.RealtimeClock().Now() - for _, tg := range ts.Root.ThreadGroups() { - pidns := tg.PIDNamespace() + pidns := ts.Root + for _, tg := range pidns.ThreadGroups() { pid := pidns.IDOfThreadGroup(tg) // If tg has already been reaped ignore it. diff --git a/runsc/container/multi_container_test.go b/runsc/container/multi_container_test.go index 17aef2121..b434cdb23 100644 --- a/runsc/container/multi_container_test.go +++ b/runsc/container/multi_container_test.go @@ -203,7 +203,7 @@ func TestMultiPIDNS(t *testing.T) { t.Errorf("failed to wait for sleep to start: %v", err) } expectedPL = []*control.Process{ - newProcessBuilder().PID(1).Cmd("sleep").Process(), + newProcessBuilder().PID(2).Cmd("sleep").Process(), } if err := waitForProcessList(containers[1], expectedPL); err != nil { t.Errorf("failed to wait for sleep to start: %v", err) @@ -291,16 +291,18 @@ func TestMultiPIDNSPath(t *testing.T) { if err := waitForProcessList(containers[0], expectedPL); err != nil { t.Errorf("failed to wait for sleep to start: %v", err) } - if err := waitForProcessList(containers[2], expectedPL); err != nil { - t.Errorf("failed to wait for sleep to start: %v", err) - } - expectedPL = []*control.Process{ newProcessBuilder().PID(2).PPID(0).Cmd("sleep").Process(), } if err := waitForProcessList(containers[1], expectedPL); err != nil { t.Errorf("failed to wait for sleep to start: %v", err) } + expectedPL = []*control.Process{ + newProcessBuilder().PID(3).PPID(0).Cmd("sleep").Process(), + } + if err := waitForProcessList(containers[2], expectedPL); err != nil { + t.Errorf("failed to wait for sleep to start: %v", err) + } // Root container runs in the root PID namespace and can see all // processes. @@ -371,14 +373,13 @@ func TestMultiPIDNSKill(t *testing.T) { const processes = 3 testSpecs, ids := createSpecs(cmd, cmd) - // TODO: Uncomment after https://github.com/google/gvisor/pull/5519. - //testSpecs[1].Linux = &specs.Linux{ - // Namespaces: []specs.LinuxNamespace{ - // { - // Type: "pid", - // }, - // }, - //} + testSpecs[1].Linux = &specs.Linux{ + Namespaces: []specs.LinuxNamespace{ + { + Type: "pid", + }, + }, + } containers, cleanup, err := startContainers(conf, testSpecs, ids) if err != nil { |