• R
    improve pthread_exit synchronization with functions targeting tid · 526e64f5
    Rich Felker 提交于
    if the last thread exited via pthread_exit, the logic that marked it
    dead did not account for the possibility of it targeting itself via
    atexit handlers. for example, an atexit handler calling
    pthread_kill(pthread_self(), SIGKILL) would return success
    (previously, ESRCH) rather than causing termination via the signal.
    
    move the release of killlock after the determination is made whether
    the exiting thread is the last thread. in the case where it's not,
    move the release all the way to the end of the function. this way we
    can clear the tid rather than spending storage on a dedicated
    dead-flag. clearing the tid is also preferable in that it hardens
    against inadvertent use of the value after the thread has terminated
    but before it is joined.
    526e64f5
pthread_setschedprio.c 210 字节