core/dynamo.c
/* i#237/PR 498284: a thread about to execute SYS_execve should be considered
 * exited, but we can't easily clean up it for real immediately
 */
i#237/PR 498284: a thread about to execute SYS_execve should be considered
exited, but we can't easily clean up it for real immediately
i#237 / PR 498284 : a thread about to execute SYS_execve should be considered exited but we can ' t easily clean up it for real immediately
void
mark_thread_execve(thread_record_t *tr, bool execve)
{
    ASSERT((execve && !tr->execve) || (!execve && tr->execve));
    tr->execve = execve;
    mutex_lock(&all_threads_lock);
    if (execve) {
        ASSERT(num_execve_threads == 0);
        num_execve_threads++;
    } else {
        ASSERT(num_execve_threads > 0);
        num_execve_threads--;
    }
    mutex_unlock(&all_threads_lock);
}
void mark_thread_execve ( thread_record_t * tr , bool execve ) { ASSERT ( ( execve && ! tr -> execve ) || ( ! execve && tr -> execve ) ) ; tr -> execve = execve ; mutex_lock ( & all_threads_lock ) ; if ( execve ) { ASSERT ( num_execve_threads == 0 ) ; num_execve_threads ++ ; } else { ASSERT ( num_execve_threads > 0 ) ; num_execve_threads -- ; } mutex_unlock ( & all_threads_lock ) ; }
i#237/PR 498284: a thread about to execute SYS_execve should be considered
 exited, but we can't easily clean up it for real immediately
i#237 / PR 498284 : a thread about to execute SYS_execve should be considered exited but we can ' t easily clean up it for real immediately
/* since we free on a second vfork we should never accumulate
         * more than one
         */