Both the main thread (1) and the worker thread (3) are in "nanosleep()". (The rest are in `pthread_cond_wait()`.) (gdb) bt #0 0x00007f172734be4d in nanosleep () from /lib64/libpthread.so.0 #1 0x000000000044655b in nossleep (milsecs=milsecs@entry=100) at /mnt/software/n/nim/0.20.2/Nim/lib/pure/os.nim:2791 #2 0x000000000046f4f2 in sync_WTnSSeVs19cfp5pRs6KBLXQ_2 () at /mnt/software/n/nim/0.20.2/Nim/lib/pure/concurrency/threadpool.nim:596 (gdb) thread 3 [Switching to thread 3 (Thread 0x7f17231cd700 (LWP 32423))] (gdb) bt #0 0x00007f172734be4d in nanosleep () from /lib64/libpthread.so.0 #1 0x000000000044655b in nossleep (milsecs=milsecs@entry=100) at /mnt/software/n/nim/0.20.2/Nim/lib/pure/os.nim:2791 #2 0x000000000046dead in slave_1yqYR9cLeffanOjn0piJ2VQ (w=<optimized out>) at /mnt/software/n/nim/0.20.2/Nim/lib/pure/concurrency/threadpool.nim:346 #3 0x0000000000413144 in threadProcWrapDispatch_4bfnMli3YetX01hUbaU1ig_2 ( thrd=0x79c040 <workers_bezHuru9a1bEti2XBmfodvA+704>) at /mnt/software/n/nim/0.20.2/Nim/lib/system/threads.nim:141 #4 0x000000000041360a in threadProcWrapStackFrame_4bfnMli3YetX01hUbaU1ig ( thrd=thrd@entry=0x79c040 <workers_bezHuru9a1bEti2XBmfodvA+704>) at /mnt/software/n/nim/0.20.2/Nim/lib/system/threads.nim:156 #5 0x000000000041364d in threadProcWrapper_oTnP9cUoE9cVTUL7iHAoIIAA (closure=0x79c040 <workers_bezHuru9a1bEti2XBmfodvA+704>) at /mnt/software/n/nim/0.20.2/Nim/lib/system/threads.nim:165 #6 0x00007f1727344e25 in start_thread () from /lib64/libpthread.so.0 #7 0x00007f172707234d in clone () from /lib64/libc.so.6 Run 338 proc slave(w: ptr Worker) {.thread.} = 339 isSlave = true 340 while true: 341 if w.shutdown: 342 w.shutdown = false 343 atomicDec currentPoolSize 344 while true: 345 if w.data != nil: # <-- 346 sleep(threadpoolWaitMs) Run
That was added recently, in [https://github.com/nim-lang/Nim/issues/11275](https://github.com/nim-lang/Nim/issues/11275), to fix a threadpool seg-fault.