Skip to content

apropos and apropos-list call stuck in infinite loop

When searching symbols with either apropos or apropos-list, and provides package :asdf, the evaluation will be stuck in an infinite loop. The following form cause the REPL hangs and never returns.

(apropos-list "version" :asdf)

The ECL version is 24.5.10.

The issue is probably caused by apropos-list-inner from paclib.lisp:

(defun apropos-list-inner (string package)
  (declare (si::c-local))
  (let* ((list '())
         (string (string string)))
    (cond (package
           ;; the recursive call of apropos-list-inner does not check cycles.
           (dolist (p (package-use-list package))
             (setf list (nconc (apropos-list-inner string p) list)))

           (do-symbols (symbol package)
             (when (search string (string symbol) :test #'char-equal)
               (setq list (cons symbol list)))))
          (t
           (do-all-symbols (symbol)
             (when (search string (string symbol) :test #'char-equal)
               (setq list (cons symbol list))))))
    list))