Details
Description
The CgroupsIsolatorProcess interacts with the different cgroups subsystems via Processes dealing with a dedicated subsystem each. Each Process is held by CgroupsIsolatorProcess directly and e.g., no intermediate wrapper class is involved performing dispatch to an underlying process.
Since no wrapper around these Subsystem processes is used, a user needs to make sure to only dispatch to the process himself, he should e.g., never directly invoke functions on the Process or else inconsistencies or races can arise inside the Subsystem process; if e.g., a Subsystem dispatches to itself, CgroupsIsolatorProcess might concurrently invoke Subsystem functions.
CgroupsIsolatorProcess does not always dispatch to these process, but invokes them directly. We should fix this by either introducing wrappers around the Subsystem wrappers, or by explicitly fixing CgroupsIsolatorProcess to always use dispatch to interact with its subsystems. While the first approach seems cleaner and more future-proof, the latter might be less effort now.