[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Bug#790560: udev fails to start on sparc boot, breaking boot



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
> 
> 


Reply to: