libthreads a.k.a. C threads.
Note: since Hurd migrated to libpthread as threading library, the development and usage of libthreads has been discontinued.
libthreads has a 1:1 threading model.
A thread's death doesn't actually free the thread's stack (and maybe not the associated Mach ports either). That's because there's no way to free the stack after the thread dies (because the thread of control is gone); the stack needs to be freed by something else, and there's nothing convenient to do it. There are many ways to make it work.
However, it isn't really a leak, because the unfreed resources do get used for the next thread. So the issue is that the shrinkage of resource consumption never happens, but it doesn't grow without bounds; it just stays at the maximum even if the current number of threads is lower.
The same issue exists in libpthread.