       (when (> max-file-field-length 0)
         (goto-char (point-min))
         (let (point)
-          (while (and (not (eobp))
-                      (setq point (next-single-char-property-change (point) 'ovirt-log-analyzer-file-field-length)))
+          (ovirt-log-analyzer-while 100 (and (not (eobp))
+                                            (setq point (next-single-char-property-change (point) 'ovirt-log-analyzer-file-field-length)))
             (goto-char point)
             (let ((length (get-char-property (point) 'ovirt-log-analyzer-file-field-length)))
               (when (and length (< length max-file-field-length))

(defun ovirt-log-analyzer-filter-by-function (filter-function)
  (save-excursion
    (goto-char (point-min))
    (while (< (point) (point-max))
      (let ((beg (point))
            (end (if (funcall filter-function) (line-beginning-position) (point-max))))
        (unless (= beg end)

    (remove-overlays)
    (let ((unknown-tags '())
          (max-file-field-length 0))
      (ovirt-log-analyzer-while 50 (not (eobp))
        (when (looking-at "[0-9][^|\n]*| \\( *[^|\n]+:[0-9]+\\) *| \\( *\\([^|\n]*\\) |\\).*$")
          (let* ((beg (match-beginning 0))
                 (end (match-end 0))
