Just had a process we were debugging through ddd/gdb. It/all it's threads were status 'T' ("trace"?) [except for one zombie], and it just wouldn't go away. It had a port open that we then could not re-use.
I understand that 'T' would probably have something to do with gdb being attached, but that had long since gone away. Any thoughts as to how I should have killed it? Had to reboot in the end.
It's T for sTopped. "kill -CONT <pid>" will wake it up so it can be killed. Unix is so nice :-), you can't kill things if they're asleep, you have to wake them up before you hit them over the head. If a process gets stuck in "D" (high-priority sleep) you can't wake it up to kill it. Short of hacking the kernel's process table to change the priority which might be easy now there's gdb access -- but I don't recommend doing that.
jch