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

_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to