diff options
-rw-r--r-- | snekbox/nsjail.py | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/snekbox/nsjail.py b/snekbox/nsjail.py index 3235ee0..06c3154 100644 --- a/snekbox/nsjail.py +++ b/snekbox/nsjail.py @@ -224,6 +224,18 @@ class NsJail: log.info(f"nsjail return code: {returncode}") + # If we hit a cgroup limit then there is a chance the nsjail cgroups did not + # get removed. If we don't remove them then when we try remove the parents + # we will get a "Device or resource busy" error. + + children = [] + + children.extend(Path(self.config.cgroup_mem_mount, cgroup).glob("NSJAIL.*")) + children.extend(Path(self.config.cgroup_pids_mount, cgroup).glob("NSJAIL.*")) + + for child in children: + child.rmdir() + # Remove the dynamically created cgroups once we're done Path(self.config.cgroup_mem_mount, cgroup).rmdir() Path(self.config.cgroup_pids_mount, cgroup).rmdir() |