From: Jason Ish Date: Thu, 18 Apr 2024 06:33:09 +0000 (-0600) Subject: threads: don't attempt to join threads with an id of 0 X-Git-Tag: suricata-8.0.0-beta1~148 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=421e0a2bf9b2522fc8ceca0ae7ca099a3fc98a60;p=thirdparty%2Fsuricata.git 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 --- diff --git a/src/tm-threads.c b/src/tm-threads.c index 75541f341c..a1d74a80fb 100644 --- a/src/tm-threads.c +++ b/src/tm-threads.c @@ -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; }