--- ./daemon.c.ORIGIN 2019-03-18 17:53:51 +0100 +++ ./daemon.c 2019-03-18 18:00:16 +0100 @@ -943,8 +943,11 @@ * Otherwise empty handler because systemcalls will get interrupted * upon signal receipt * SysV needs the handler to be rearmed + * AIX does NOT like sometimes (t5570-git-daemon test 4) to rearm it. */ +#ifndef _AIX signal(SIGCHLD, child_handler); +#endif } static int set_reuse_addr(int sockfd) @@ -1155,7 +1158,19 @@ pfd[i].events = POLLIN; } +#ifdef _AIX + /* AIX does NOT like sometimes (t5570-git-daemon test 4) to rearm the SIGCHLD handler */ + struct sigaction sa; + + bzero(&sa, sizeof(sa)); + sa.sa_handler = child_handler; + sa.sa_flags = 0; + sigemptyset(&sa.sa_mask); + + sigaction(SIGCHLD, &sa, NULL); +#else signal(SIGCHLD, child_handler); +#endif for (;;) { int i;