From: Elias Karakoulakis Date: 2003-02-09T17:42:09+09:00 Subject: Threading problem Hello all, I've been occasionally stumbled upon a strange problem with Ruby's threads, that I cannot pinpoint its exact origin. I get occasional race conditions where the Ruby interpreter consumes all my memory until the Linux VM goes into action to kill processes (sometimes X11 too!!). We use Ruby for our Web Application Framework all throughout the hierarchy (from low-level HTTP handling to higher-level scripting). The server uses multiple threads to service HTTP requests (one per socket). Sometimes, and under no particular occasion, the server enters a 100% CPU loop and consumes all memory until its death. We are taking all necessary precautions (at least we think we do) to serialize access to shared data and other critical sections of the code, using the Sync class. What's interesting is that this exception pops up in our logs: Sync_m::Err::UnknownLocker: Thread(#) not locked. Taking a look inside sync.rb, this particular error occurs if the blocking thread leaving a critical section doesn't hold the mutex/lock anymore!!! Any ideas? We are using Ruby 1.6.8 on Linux and AIX and the error appears (although not in a reproducable manner) regardless of the platform used. Just for the records, we use gcc-3.2 on SuSE 8.0 (Linux-2.4.18) and IBM's XLC 6.0 on AIX 5.2. Thanks for your time, and sorry of this isn't the correct place to post queries like this. Elias