Basically my program looks like this:
static volatile sig_atomic_t child_terminated=0;
void sigchld_handler(int sig) {
int copy_errno=errno;
debug("Received SIGCHLD");
child_terminated=1;
signal(SIGCHLD,sigchld_handler);
errno=copy_errno;
}
int main() {
signal(SIGCHLD,sigchld_handler);
for(;;) {
/* do some heavy weight stuff */
/* check for child_terminated and perform waitpid */
}
Maybe the debug-call is the reason. It is sending the String to the local
syslog-daemon, using sockets and therefore a bunch of system calls. When I
consider strace, I see the arrival of SIGCHLD and the futex call directly
behind it.
When the futex call is performed, the 3rd argument is a "2". I verified it
using PTRACE_PEEKDATA on the 1st argument (which is the address of the futex
value). It really is a "2". Do you know what this "2" exactly means? Does it
mean one process blocked a ressource and another one is now suspended? What
happens if I write a "1" to the futex address?
Thanks a lot for answers ;-)
--
Futex hang when exiting using the window close button
https://bugs.launchpad.net/bugs/57731
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs