[systemd-devel] Running a x86_64 kernel on Fedora 15 x86 userland

Thomas Meyer thomas at m3y3r.de
Thu Sep 15 04:28:13 PDT 2011


Am Sonntag, den 11.09.2011, 10:04 +0200 schrieb Thomas Meyer:

> any ideas what is going on here?

I was able to debug the hang with gdb:

1.) start into emergency mode
2.) start all automount point in /lib/systemd/system/*.automount
3.) ls /dev/hugepages

gdb:

$ cont
Continuing.
Detaching after fork from child process 513. -> this is the mount process forked via mount_spawn() for the automount point!
triggerd by the ls command! the command executes successfully and is left as zombie.

Program received signal SIGSTOP, Stopped (signal). -> SIGSTOP to break into systemd

$ bt
0xf77f5430 in __kernel_vsyscall ()
#0  0xf77f5430 in __kernel_vsyscall ()
#1  0x4a76ebfe in poll () from /lib/libc.so.6
#2  0x080b5a27 in loop_read (fd=16, buf=0xffef5820, nbytes=296, do_poll=true) at src/util.c:2650
#3  0x080c5d9b in automount_fd_event (u=0x97aa6e8, fd=16, events=1, w=0x97aa814) at src/automount.c:761
#4  0x08058a67 in process_event (ev=0xffef59d4, m=0x96737f0) at src/manager.c:2298
#5  manager_loop (m=0x96737f0) at src/manager.c:2413
#6  0x0804e98c in main (argc=2, argv=0xffef5d94) at src/main.c:1280

-> systemd hangs here and seems to wait forever in the loop_read()

-> force an error in sys_poll()

$ frame 2
#2  0x080b5a27 in loop_read (fd=16, buf=0xffef5820, nbytes=296, do_poll=true) at src/util.c:2650
2650	                                if (poll(&pollfd, 1, -1) < 0) {

$ return -1 
Make loop_read return now? (y or n) y

#0  0x080c5d9b in automount_fd_event (u=0x97aa6e8, fd=16, events=1, w=0x97aa814) at src/automount.c:761
761	        if ((l = loop_read(a->pipe_fd, &packet, sizeof(packet), true)) != sizeof(packet)) {

$ cont
Continuing.

who removes the events from epoll_wait() in manager_loop()? is the fd
event not removed or processed twice?

> with kind regards
> thomas



More information about the systemd-devel mailing list