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 Desktop Bugs, which is a bug assignee. -- desktop-bugs mailing list desktop-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/desktop-bugs