waitpid(__pthread_manager_pid, NULL, __WCLONE);
waitpid(__pthread_manager_thread.p_pid, NULL, __WCLONE);
static void pthread_handle_sigcancel(int sig){  pthread_descr self = thread_self();  sigjmp_buf * jmpbuf;  if (__pthread_exit_requested) {    /* Main thread should accumulate times for thread manager and its       children, so that timings for main thread account for all threads. */    if (self == __pthread_main_thread)      waitpid(__pthread_manager_pid, NULL, __WCLONE);    _exit(__pthread_exit_code);  }  if (self->p_canceled && self->p_cancelstate == PTHREAD_CANCEL_ENABLE) {    if (self->p_canceltype == PTHREAD_CANCEL_ASYNCHRONOUS)      pthread_exit(PTHREAD_CANCELED);    jmpbuf = self->p_cancel_jmp;    if (jmpbuf != NULL) {      self->p_cancel_jmp = NULL;      siglongjmp(*jmpbuf, 1);    }  }}