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
}
}
- /* 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;
}