threads: don't attempt to join threads with an id of 0

Worker threads not created by Suricata, but instead a library user
should not be joined, as Suricata does not have access to their thread
handle, and it may in-fact be an unjoinable thread, such as the main
process.

When the thread ID is 0, assume the thread is "externally" managed,
but still mark is as dead to satisfy Suricata's view of the thread.

Ticket: #7240
pull/12891/head
Jason Ish 2 years ago committed by Victor Julien
parent 4df33c496e
commit 421e0a2bf9

@ -1355,9 +1355,12 @@ static int TmThreadKillThread(ThreadVars *tv)
}
}
/* join it and flag it as dead */
pthread_join(tv->t, NULL);
SCLogDebug("thread %s stopped", tv->name);
/* Join the thread and flag as dead, unless the thread ID is 0 as
* its not a thread created by Suricata. */
if (tv->t) {
pthread_join(tv->t, NULL);
SCLogDebug("thread %s stopped", tv->name);
}
TmThreadsSetFlag(tv, THV_DEAD);
return 1;
}

Loading…
Cancel
Save