diff --git a/lib/libkse/thread/thr_kern.c b/lib/libkse/thread/thr_kern.c index ae3a2ff0beb..f1b28c0e38c 100644 --- a/lib/libkse/thread/thr_kern.c +++ b/lib/libkse/thread/thr_kern.c @@ -1337,6 +1337,7 @@ kseg_gc(struct pthread *curthread) if (free_kseg_count <= MAX_CACHED_KSEGS) return; + TAILQ_INIT(&worklist); crit = _kse_critical_enter(); KSE_LOCK_ACQUIRE(curthread->kse, &kse_lock); while (free_kseg_count > MAX_CACHED_KSEGS) { diff --git a/lib/libpthread/thread/thr_kern.c b/lib/libpthread/thread/thr_kern.c index ae3a2ff0beb..f1b28c0e38c 100644 --- a/lib/libpthread/thread/thr_kern.c +++ b/lib/libpthread/thread/thr_kern.c @@ -1337,6 +1337,7 @@ kseg_gc(struct pthread *curthread) if (free_kseg_count <= MAX_CACHED_KSEGS) return; + TAILQ_INIT(&worklist); crit = _kse_critical_enter(); KSE_LOCK_ACQUIRE(curthread->kse, &kse_lock); while (free_kseg_count > MAX_CACHED_KSEGS) {