Subject: Re: 23.0.60; Error When Trying to Access Remote Files

From: Florian Beck <[email-masked]>
Date: Sat, 18 Oct 2008 19:29:03 +0200

Chong Yidong <[email-masked]> writes:

> [I sent this message several weeks ago, and received no response.
> Resending.]
>
>> On Tue, 2008-09-30 at 13:20 -0400, Chong Yidong wrote:
>>> > emacs -Q
>>> 
>>> > (setq debug-on-error t)
>>> > C-x C-f /ftp:[email-masked]:
>>> > [TAB]
>>> 
>>> > Debugger entered--Lisp error: (wrong-type-argument char-or-string-p nil)
>>> >   signal(wrong-type-argument (char-or-string-p nil))
>>> >   completion--some(#[(style) "^H A@\n^K\f$" [style
>>> >   completion-styles-alist
>>> 
>>> I can't reproduce this, also using latest CVS and `emacs -Q'.  Could you
>>> try to debug the problem?
>>
>> Not sure. What should I do?
>
> First, could you go to minibuffer.el, evaluate it (M-x eval-buffer),
> trigger the error again, and post the backtrace?  This should produce a
> more informative backtrace.

I'm sorry, I ment to get back to you, but unfortunatley this is one of
the errors that only happen occasionally. I tried a couple of scenarios,
like with and without networking, but could not reliably reproduce the
error. It does still happen from time to time.

Now, I followd your advice and produced a somewhat more informative
backtrace. How do I get rid of the ellipses? (print-length is nil)

Debugger entered--Lisp error: (wrong-type-argument char-or-string-p nil)
  signal(wrong-type-argument (char-or-string-p nil))
  (if firsterror (signal (car firsterror) (cdr firsterror)))
  (or res (if firsterror (signal ... ...)))
  (let ((firsterror nil) res) (while (and ... xs) (condition-case err ... ...)) (or res (if firsterror ...)))
  completion--some((lambda (style) (funcall (nth 1 ...) string table pred point)) (basic partial-completion))
  (if (and (symbolp table) (get table ...)) (funcall table string pred nil point) (completion--some (lambda ... ...) completion-styles))
  completion-try-completion(#("/ftp:[email-masked]:" 1 32 (gnus-callback gnus-button-push gnus-data #<marker at 422 in *Article*>)) read-file-name-internal nil 33)
  funcall(completion-try-completion #("/ftp:[email-masked]:" 1 32 (gnus-callback gnus-button-push gnus-data #<marker at 422 in *Article*>)) read-file-name-internal nil 33)
  (let* ((beg ...) (end ...) (string ...) (comp ...)) (cond (... ... ... ...) (... ...) (t ...)))
  completion--do-completion()
  (let ((--cl-var-- ...)) (cond (... nil) (... ... ... t) (... ... ... t) (t t)))
  (case (completion--do-completion) (0 nil) (1 (goto-char ...) (minibuffer-message "Sole completion") t) (3 (goto-char ...) (minibuffer-message "Complete, but not unique") t) (t t))
  (if (window-live-p window) (with-current-buffer (window-buffer window) (if ... ... ...) nil) (case (completion--do-completion) (0 nil) (1 ... ... t) (3 ... ... t) (t t)))
  (let ((window minibuffer-scroll-window)) (if (window-live-p window) (with-current-buffer ... ... nil) (case ... ... ... ... ...)))
  minibuffer-complete()
  call-interactively(minibuffer-complete nil nil)
  completing-read("Find file: " read-file-name-internal nil nil "~/Material/src/emacs/lisp/" file-name-history "~/Material/src/emacs/lisp/")
  (progn (add-hook (quote minibuffer-setup-hook) setup-hook) (completing-read prompt (quote read-file-name-internal) nil mustmatch insdef (quote file-name-history) default-filename))
  (unwind-protect (progn (add-hook ... setup-hook) (completing-read prompt ... nil mustmatch insdef ... default-filename)) (remove-hook (quote minibuffer-setup-hook) setup-hook))
  (let (setup-hook) (setq setup-hook (list ... ... ...)) (unwind-protect (progn ... ...) (remove-hook ... setup-hook)))
  (let ((--cl-dir-- ...)) (setf (symbol-value --cl-dir--) (file-name-as-directory ...)) (let (setup-hook) (setq setup-hook ...) (unwind-protect ... ...)))
  (lexical-let ((dir ...)) (minibuffer-with-setup-hook (lambda nil ...) (completing-read prompt ... nil mustmatch insdef ... default-filename)))
  (if (not (next-read-file-uses-dialog-p)) (lexical-let (...) (minibuffer-with-setup-hook ... ...)) (let (...) (when ... ... ...) (if default-filename ...) (setq add-to-history t) (x-file-dialog prompt dir default-filename mustmatch ...)))
  (let* ((val ...) (replace-in-history ...)) (when (eq val default-filename) (if ... ...) (setq val "")) (unless val (error "No file name specified")) (if (and default-filename ...) (setq val default-filename)) (setq val (substitute-in-file-name val)) (if replace-in-history (let ... ... ...) (if add-to-history ...)) val)
  (let ((completion-ignore-case read-file-name-completion-ignore-case) (minibuffer-completing-file-name t) (read-file-name-predicate ...) (add-to-history nil)) (let* (... ...) (when ... ... ...) (unless val ...) (if ... ...) (setq val ...) (if replace-in-history ... ...) val))
  (if read-file-name-function (funcall read-file-name-function prompt dir default-filename mustmatch initial predicate) (let (... ... ... ...) (let* ... ... ... ... ... ... val)))
  (let ((insdef ...)) (if read-file-name-function (funcall read-file-name-function prompt dir default-filename mustmatch initial predicate) (let ... ...)))
  read-file-name("Find file: " nil "/home/flo/Material/src/emacs/lisp/" nil)
  find-file-read-args("Find file: " nil)
  byte-code("ÁÂ…Ã\"‡" [find-file-confirm-nonexistent-file find-file-read-args "Find file: " confirm-only] 3)
  call-interactively(find-file nil nil)