about summary refs log tree commit homepage
path: root/lib/mongrel/debug.rb
diff options
context:
space:
mode:
authorzedshaw <zedshaw@19e92222-5c0b-0410-8929-a290d50e31e9>2006-06-09 05:01:26 +0000
committerzedshaw <zedshaw@19e92222-5c0b-0410-8929-a290d50e31e9>2006-06-09 05:01:26 +0000
commitdb9bf40124ebc310e30913087e24071666b8867b (patch)
tree8d913099c11e9876232b68c1dda52b2bc28756b5 /lib/mongrel/debug.rb
parentd9e061c97d2280b367cb3882c42f85b1633d836e (diff)
downloadunicorn-db9bf40124ebc310e30913087e24071666b8867b.tar.gz
git-svn-id: svn+ssh://rubyforge.org/var/svn/mongrel/trunk@236 19e92222-5c0b-0410-8929-a290d50e31e9
Diffstat (limited to 'lib/mongrel/debug.rb')
-rw-r--r--lib/mongrel/debug.rb30
1 files changed, 18 insertions, 12 deletions
diff --git a/lib/mongrel/debug.rb b/lib/mongrel/debug.rb
index 48a300a..2a13ae5 100644
--- a/lib/mongrel/debug.rb
+++ b/lib/mongrel/debug.rb
@@ -79,12 +79,14 @@ module ObjectTracker
     ospace = Set.new
     counts = {}
     
-    # Strings can't be tracked easily and are so numerous that they drown out all else
-    # so we just ignore them in the counts.
     ObjectSpace.each_object do |obj|
-      ospace << obj.object_id
-      counts[obj.class] ||= 0
-      counts[obj.class] += 1
+      begin
+        ospace << obj.object_id
+        counts[obj.class] ||= 0
+        counts[obj.class] += 1
+      rescue Object
+        # skip since object_id can magically get parameters
+      end
     end
     
     dead_objects = @active_objects - ospace
@@ -194,15 +196,19 @@ module RequestLog
     def process(request, response)
       MongrelDbg::trace(:threads, "#{Time.now} REQUEST #{request.params['PATH_INFO']}")
       ObjectSpace.each_object do |obj|
-        if obj.class == Mongrel::HttpServer
-          worker_list = obj.workers.list
+        begin
+          if obj.class == Mongrel::HttpServer
+            worker_list = obj.workers.list
 
-          if worker_list.length > 0
-            keys = "-----\n\tKEYS:"
-            worker_list.each {|t| keys << "\n\t\t-- #{t}: #{t.keys.inspect}" }
-          end
+            if worker_list.length > 0
+              keys = "-----\n\tKEYS:"
+              worker_list.each {|t| keys << "\n\t\t-- #{t}: #{t.keys.inspect}" }
+            end
 
-          MongrelDbg::trace(:threads, "#{obj.host}:#{obj.port} -- THREADS: #{worker_list.length} #{keys}")
+            MongrelDbg::trace(:threads, "#{obj.host}:#{obj.port} -- THREADS: #{worker_list.length} #{keys}")
+          end
+        rescue Object
+          # ignore since obj.class can sometimes take parameters
         end
       end
     end