I've been looking into this further, and it doesn't seem like pike itself has locked up; there are 5 worker threads in a thread queue, and one thread (the "main" thread) that's handling background tasks. The main thread is working just fine. It just seems like at some point, the thread queue seems to stop working. Any suggestions about how to track the problem? It seems to be occurring several times a week, so it's got to be a reasonably common situation.
Bill
Describing all threads: Thread 1: Thread 2: Thread 3:
Idle handler threads.
Thread 4: _static_modules.Builtin()->thread_id: Thread.Thread(1)->backtrace() base_server/caudium.pike:3493: /opt/caudium/server/base_server/caudium ()->describe_all_threads() Stdio.File: Stdio.File("socket", "63.85.143.88 1198", 777 /* fd=103 */)->set_write_callback(Stdio.File("socket", "63.85.143.88 1198", 777 /* fd=103 */)$
The probable cause.
Thread 5: Thread 6:
Idle handler threads.
The hangup appears to be:
Thread.Queue()->read()