|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 00/12] libxl: fork: SIGCHLD flexibility
To check that this was doing roughly the right things, I straced xl.
Here is what it does before the first time libxl wants to fork:
pipe([17, 18]) = 0
rt_sigaction(SIGCHLD, {0xb76ad507, [], SA_RESTART|SA_NOCLDSTOP}, {SIG_DFL, [],
0}, 8) = 0
rt_sigaction(SIGCHLD, {0xb76ad150, [], SA_RESTART|SA_NOCLDSTOP}, NULL, 8) = 0
rt_sigaction(SIGCHLD, {0xb76ad507, [], SA_RESTART|SA_NOCLDSTOP}, NULL, 8) = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD,
child_tidptr=0xb744a978) = 10033
That seems about right. (It does leak the self-pipe into the child
but that is of no consequence.)
Here is what is happens in the parent when the child exits:
--- SIGCHLD (Child exited) @ 0 (0) ---
write(18, "\0", 1) = 1
sigreturn() = ? (mask now [])
gettimeofday({1389975566, 501125}, NULL) = 0
poll([{fd=17, events=POLLIN}, {fd=7, events=POLLIN}, {fd=7, events=POLLIN}],
3, -1) = 1 ([{fd=17, revents=POLLIN}])
gettimeofday({1389975566, 501571}, NULL) = 0
read(17, "\0", 256) = 1
waitpid(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], WNOHANG) = 10033
That looks mostly right for the libxl child handling except that there
are two instances of {fd=7, events=POLLIN}. I'm going to investigate
what that is and why it might be happening, starting by trying to
figure out what fd 7 is.
The trace then continues:
close(14) = 0
close(15) = 0
close(12) = 0
munmap(0xb766a000, 4096) = 0
close(11) = 0
I think that is the migration ao and its fds etc. being torn down.
write(10, "\0", 1) = 1
This is the poller wakeup for ao completion.
rt_sigaction(SIGCHLD, {0xb76ad150, [], SA_RESTART|SA_NOCLDSTOP}, NULL, 8) = 0
rt_sigaction(SIGCHLD, {0xb76ad507, [], SA_RESTART|SA_NOCLDSTOP}, NULL, 8) = 0
rt_sigaction(SIGCHLD, {SIG_DFL, [], 0}, {0xb76ad507, [],
SA_RESTART|SA_NOCLDSTOP}, 8) = 0
And here libxl removes the ctx from the SIGCHLD users: the first two
sigaction calls are from the defer and release, and the final one
restores the application's default handler.
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |