Skip to main content

libcontainer/process/init/
error.rs

1use crate::namespaces::NamespaceError;
2use crate::process::channel;
3use crate::process::memory_policy::MemoryPolicyError;
4use crate::rootfs::device::DeviceError;
5#[cfg(feature = "libseccomp")]
6use crate::seccomp;
7use crate::syscall::SyscallError;
8use crate::workload::{ExecutorSetEnvsError, ExecutorValidationError};
9use crate::{apparmor, hooks, notify_socket, rootfs, tty, workload};
10
11#[derive(Debug, thiserror::Error)]
12pub enum InitProcessError {
13    #[error("failed to set sysctl")]
14    Sysctl(#[source] std::io::Error),
15    #[error("failed to mount path as readonly")]
16    MountPathReadonly(#[source] SyscallError),
17    #[error("failed to mount path as masked")]
18    MountPathMasked(#[source] SyscallError),
19    #[error(transparent)]
20    Namespaces(#[from] NamespaceError),
21    #[error("failed to set hostname")]
22    SetHostname(#[source] SyscallError),
23    #[error("failed to set domainname")]
24    SetDomainname(#[source] SyscallError),
25    #[error("failed to reopen /dev/null")]
26    ReopenDevNull(#[source] std::io::Error),
27    #[error("failed to unix syscall")]
28    NixOther(#[source] nix::Error),
29    #[error(transparent)]
30    MissingSpec(#[from] crate::error::MissingSpecError),
31    #[error("failed to setup tty")]
32    Tty(#[source] tty::TTYError),
33    #[error("failed to run hooks")]
34    Hooks(#[from] hooks::HookError),
35    #[error("failed to prepare rootfs")]
36    RootFS(#[source] rootfs::RootfsError),
37    #[error("failed syscall")]
38    SyscallOther(#[source] SyscallError),
39    #[error("failed apparmor")]
40    AppArmor(#[source] apparmor::AppArmorError),
41    #[error(transparent)]
42    Pathrs(#[from] pathrs::error::Error),
43    #[error("invalid umask")]
44    InvalidUmask(u32),
45    #[error(transparent)]
46    #[cfg(feature = "libseccomp")]
47    Seccomp(#[from] seccomp::SeccompError),
48    #[error("invalid executable: {0}")]
49    InvalidExecutable(String),
50    #[error("io error")]
51    Io(#[source] std::io::Error),
52    #[error(transparent)]
53    Channel(#[from] channel::ChannelError),
54    #[error("setgroup is disabled")]
55    SetGroupDisabled,
56    #[error(transparent)]
57    NotifyListener(#[from] notify_socket::NotifyListenerError),
58    #[error(transparent)]
59    Workload(#[from] workload::ExecutorError),
60    #[error(transparent)]
61    WorkloadValidation(#[from] ExecutorValidationError),
62    #[error(transparent)]
63    WorkloadSetEnvs(#[from] ExecutorSetEnvsError),
64    #[error("invalid io priority class: {0}")]
65    IoPriorityClass(String),
66    #[error("call exec sched_setattr error: {0}")]
67    SchedSetattr(String),
68    #[error(transparent)]
69    MemoryPolicy(#[from] MemoryPolicyError),
70    #[error(transparent)]
71    Network(#[from] crate::network::NetworkError),
72    #[error("failed to verify if current working directory is safe")]
73    InvalidCwd(#[source] nix::Error),
74    #[error("missing linux section in spec")]
75    NoLinux,
76    #[error("missing process section in spec")]
77    NoProcess,
78    #[error("device error")]
79    Device(#[source] DeviceError),
80    #[error("personality flag has not supported at this time")]
81    UnsupportedPersonalityFlag,
82}