core/dynamo.c
/* We don't free cur thread until after client exit event (PR 536058) except for
 * fragment_thread_exit().  Since this is called outside of dynamo_thread_exit()
 * on process exit we assume fine to skip enter_threadexit().
 */
We don't free cur thread until after client exit event (PR 536058) except for
fragment_thread_exit().  Since this is called outside of dynamo_thread_exit()
on process exit we assume fine to skip enter_threadexit().
We don ' t free cur thread until after client exit event ( PR 536058 ) except for fragment_thread_exit () . Since this is called outside of dynamo_thread_exit () on process exit we assume fine to skip enter_threadexit () .
static void
dynamo_thread_exit_pre_client(dcontext_t *dcontext, thread_id_t id)
{
#ifdef DEBUG
    fcache_thread_exit_stats(dcontext);
#endif
    trace_abort(dcontext);
    fragment_thread_exit(dcontext);
#ifdef CLIENT_INTERFACE
    instrument_thread_exit_event(dcontext);
#endif
}
static void dynamo_thread_exit_pre_client ( dcontext_t * dcontext , thread_id_t id ) { #ifdef DEBUG fcache_thread_exit_stats ( dcontext ) ; #endif trace_abort ( dcontext ) ; fragment_thread_exit ( dcontext ) ; #ifdef CLIENT_INTERFACE instrument_thread_exit_event ( dcontext ) ; #endif }
We don't free cur thread until after client exit event (PR 536058) except for
 fragment_thread_exit().
We don ' t free cur thread until after client exit event ( PR 536058 ) except for fragment_thread_exit () .
/* fcache stats needs to examine fragment state, so run it before
     * fragment exit, but real fcache exit needs to be after fragment exit
     */ /* must abort now to avoid deleting possibly un-deletable fragments
     * monitor_thread_exit remains later b/c of monitor_remove_fragment calls
     */