Bug#790560: udev fails to start on sparc boot, breaking boot
Richard Mortimer
richm at oldelvet.org.uk
Thu Aug 6 12:13:10 BST 2015
It looks like stdout and/or stderr output is mixed up with the strace
output but it looks udevd is failing because the chdir to / fails.
Notes inline below. (Caution I'm comparing against current systemd git
HEAD and not any specific version)
http://cgit.freedesktop.org/systemd/systemd/tree/src/udev/udevd.c
blob: 0661f7be00fc50c3d62643e572c48816342ba1e1
On 06/08/2015 10:47, Artyom Tarasenko wrote:
> That's what I see in the strace log:
>
> set_tid_address(0xfffff80100133790) = 9184
> set_robust_list(0xfffff801001337a0, 24) = 0
> rt_sigaction(SIGRTMIN, {0xfffff801006c6da0, [], SA_SIGINFO}, NULL,
> 0xfffff801006d2098, 8) = 0
> rt_sigaction(SIGRT_1, {0xfffff801006c6c40, [], SA_RESTART|SA_SIGINFO},
> NULL, 0xfffff801006d2098, 8) = 0
> rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
> getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
> statfs("/sys/fs/selinux", 0x7feffc49960) = -1 ENOENT (No such file or directory)
> statfs("/selinux", 0x7feffc49960) = -1 ENOENT (No such file or directory)
> brk(0) = 0x10000084000
> brk(0x100000a6000) = 0x100000a6000
> open("/proc/filesystems", O_RDONLY) = 3
> fstat64(3, {st_mode=0, st_size=0, ...}) = 0
> mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
> 0) = 0xfffff80100004000
> read(3, "nodev\tsysfs\nnodev\trootfs\nnodev\tb"..., 1024) = 299
> read(3, "", 1024) = 0
> close(3) = 0
> munmap(0xfffff80100004000, 8192) = 0
> access("/proc/vz", F_OK) = -1 ENOENT (No such file or directory)
> ioctl(2, _IOC(_IOC_READ, 0x54, 0x08, 0x24), {B38400 opost isig icanon
> echo ...}) = 0
> access("/proc/vz", F_OK) = -1 ENOENT (No such file or directory)
Cannot see what got us this far but I would guess that it is checking
whether the process is running in a virtualized environment.
> writev(2, [{"ine, ignoring: Invalid argument", 31}, {"u", 1}], 2ine,
> ignoring: Invalid argumentu) = 32
This seems to correspond to line 1660
log_warning_errno(r, "failed to parse kernel command line, ignoring: %m");
This failure to parse the kernel command line is not a fatal error but
it might indicate something else is wrong.
> getuid() = 0
line 1667 - checking to make sure that udevd is running as root.
> sched_getaffinity(0, 128, {1}) = 8
Line 1677 set affinity.
> chdir("/: %m") = -1 ENOENT (No such file or directory)
Line 1685 is where things fail.
r = chdir("/");
It is not clear whether the code/binary is wrong here i.e. it really is
trying to chdir to "/: %m" or whether it is strace and stderr output
getting mixed up. The error logging function on line 1687 has a %m
r = log_error_errno(errno, "could not change dir to /: %m");
But the %m should have been expanded in the output.
> writev(2, [{"/dev", 4}, {"u", 1}], 2/devu) = 5
> exit_group(1) = ?
> +++ exited with 1 +++
>
> Note the corruption in writev(2, [{"ine, ignoring: Invalid argument",
> 31}, {"u", 1}], 2ine, ignoring: Invalid argumentu).
>
> The things seem to go astray after failing to find /proc/vz
> and it's really not there:
>
> # ls /proc/v*
> /proc/version /proc/vmallocinfo /proc/vmstat
> # uname -a
> Linux debian 3.2.0-4-sparc64 #1 Debian 3.2.65-1 sparc64 GNU/Linux
>
>
More information about the Pkg-systemd-maintainers
mailing list