Is there any Ruby program that has the capability to halt Ruby’s thread
switching in its tracks without calling a blocking system call? I’ve got
some long-running multi-threaded (50-60 at a time) processes (web spiders)
that freeze after several hours’ successful execution, while using 99% of
the processor time and dipping in and out of the stack according to gdb
(though I can’t get function names displayed to suggest any more detail).
I know the threading has stopped because one thread at least should show a
log message every ten minutes, and that hasn’t happened for hours.
I’m just trying to run the program directly under a freshly-built Ruby
1.6.7 under gdb and will revisit it in the morning to see where it’s got
stuck. But in case anyone has any ideas how this can happen, I’m all ears.