    # File lib/merb-core/server.rb, line 108
          def kill_pid(sig, file)
            begin
              pid = pid_in_file(file)
              Merb.logger.fatal! "Killing pid #{pid} with #{sig}"
              Process.kill(sig, pid)
              FileUtils.rm(file) if File.exist?(file)
            rescue Errno::EINVAL
              Merb.logger.fatal! "Failed to kill PID #{pid} with #{sig}: '#{sig}' is an invalid " \
                "or unsupported signal number."
            rescue Errno::EPERM
              Merb.logger.fatal! "Failed to kill PID #{pid} with #{sig}: Insufficient permissions."
            rescue Errno::ESRCH
              FileUtils.rm file
              Merb.logger.fatal! "Failed to kill PID #{pid} with #{sig}: Process is " \
                "deceased or zombie."
            rescue Errno::EACCES => e
              Merb.logger.fatal! e.message
            rescue Errno::ENOENT => e
              # This should not cause abnormal exit, which is why
              # we do not use Merb.fatal but instead just log with max level.
              Merb.logger.fatal! "Could not find a PID file at #{file}. " \
                "Most likely the process is no longer running and the pid file was not cleaned up."
            rescue Exception => e
              if !e.is_a?(SystemExit)
                Merb.logger.fatal! "Failed to kill PID #{pid.inspect} with #{sig.inspect}: #{e.message}"
              end
            end
          end