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()
Not quite...
I also did a truss to see what the threads were up to, and here's what I got:
bash-2.05$ sudo truss -p 26891 /1: ioctl(105, DP_POLL, 0xFFBFE8B8) (sleeping...)
The above hints that the problem lies in the backend.
/2: lwp_park(0x00000000, 1) (sleeping...) /3: lwp_park(0x00000000, 0) (sleeping...) /4: lwp_park(0x00000000, 1) (sleeping...) /5: lwp_park(0x00000000, 0) (sleeping...) /6: lwp_park(0x00000000, 1) (sleeping...)
A few cond_wait()s.
This is Solaris 9/SPARC... any suggestions on how I might be able to troubleshoot the problem further?
The problem looks like the one fixed in Pike 7.7's backend.cmod 1.174:
| revision 1.174 | date: 2005/04/13 14:16:43; author: grubba; state: Exp; lines: +45 -4 | Fixed deadlock in BACKEND_USES_DEVPOLL mode for POLL_DEVICE_SET_EVENTS() hanging when the backend thread is in MY_POLL(). | Fixes performance problems with Roxen on Solaris.
That fix may not have been backported to Pike 7.6.
Bill