# File lib/dbus/bus.rb, line 791
    def run
      # before blocking, empty the buffers
      # https://bugzilla.novell.com/show_bug.cgi?id=537401
      @buses.each_value do |b|
        while m = b.pop_message
          b.process(m)
        end
      end
      while not @quitting and not @buses.empty?
        ready, dum, dum = IO.select(@buses.keys)
        ready.each do |socket|
          b = @buses[socket]
          begin
            b.update_buffer
          rescue EOFError, SystemCallError
            @buses.delete socket # this bus died
            next
          end
          while m = b.pop_message
            b.process(m)
          end
        end
      end
    end