mirror of
https://github.com/systemd/systemd
synced 2024-11-05 18:25:39 +00:00
nspawn: Print attempted execv() path on failure (#5199)
The failure message is typically currently: execv() failed: No such file or directory which is not very useful because it doesn’t tell you which file or directory it was trying to exec.
This commit is contained in:
parent
b5267219dd
commit
1a68e1e543
1 changed files with 11 additions and 6 deletions
|
@ -2130,6 +2130,7 @@ static int inner_child(
|
|||
NULL, /* NOTIFY_SOCKET */
|
||||
NULL
|
||||
};
|
||||
const char *exec_target;
|
||||
|
||||
_cleanup_strv_free_ char **env_use = NULL;
|
||||
int r;
|
||||
|
@ -2316,28 +2317,32 @@ static int inner_child(
|
|||
memcpy_safe(a + 1, arg_parameters, m * sizeof(char*));
|
||||
a[1 + m] = NULL;
|
||||
|
||||
a[0] = (char*) "/usr/lib/systemd/systemd";
|
||||
exec_target = a[0] = (char*) "/usr/lib/systemd/systemd";
|
||||
execve(a[0], a, env_use);
|
||||
|
||||
a[0] = (char*) "/lib/systemd/systemd";
|
||||
exec_target = a[0] = (char*) "/lib/systemd/systemd";
|
||||
execve(a[0], a, env_use);
|
||||
|
||||
a[0] = (char*) "/sbin/init";
|
||||
exec_target = a[0] = (char*) "/sbin/init";
|
||||
execve(a[0], a, env_use);
|
||||
} else if (!strv_isempty(arg_parameters))
|
||||
} else if (!strv_isempty(arg_parameters)) {
|
||||
exec_target = arg_parameters[0];
|
||||
execvpe(arg_parameters[0], arg_parameters, env_use);
|
||||
else {
|
||||
} else {
|
||||
if (!arg_chdir)
|
||||
/* If we cannot change the directory, we'll end up in /, that is expected. */
|
||||
(void) chdir(home ?: "/root");
|
||||
|
||||
exec_target = "/bin/bash";
|
||||
execle("/bin/bash", "-bash", NULL, env_use);
|
||||
|
||||
exec_target = "/bin/sh";
|
||||
execle("/bin/sh", "-sh", NULL, env_use);
|
||||
}
|
||||
|
||||
r = -errno;
|
||||
(void) log_open();
|
||||
return log_error_errno(r, "execv() failed: %m");
|
||||
return log_error_errno(r, "execv(%s) failed: %m", exec_target);
|
||||
}
|
||||
|
||||
static int setup_sd_notify_child(void) {
|
||||
|
|
Loading…
Reference in a new issue