Subject: bootstrap non-fatal args-out-of-range error making autoloads

From: Glenn Morris <[email-masked]>
Date: Thu, 24 Sep 2009 18:38:49 -0400

When bootstrapping the current trunk, I see the following non-fatal
error during the build:

Generating autoloads for dired-aux.el...
Error: (args-out-of-range 0 0)
Generating autoloads for dired-x.el...

Turning on debug-on-error while making autoloads gives (after some
randomness) the following backtrace. (I don't know why it is
abbreviated, I am setting print-length and friends to nil). This is
from the point of the find-file-noselect call in
autoload-find-destination.

It looks like something is messing up the match-data in
vc-cvs-parse-entry. It's not obvious to me that requiring parse-time
and calling parse-time-string isn't going to change the match-data in
some way.

  buffer-substring(0 0)
  (if string (substring string (match-beginning num) (match-end num)) (buffer-substring (match-beginning num) (match-end num)))
  (if (match-beginning num) (if string (substring string ... ...) (buffer-substring ... ...)))
  match-string(2)
  (string-match "\\+" (match-string 2))
  (not (string-match "\\+" (match-string 2)))
  (and (not (string-match "\\+" ...)) (car parsed-time) (equal mtime (apply ... parsed-time)))
  (cond ((and ... ... ...) (vc-file-setprop file ... mtime) (if set-state ...)) (t (vc-file-setprop file ... 0) (if set-state ...)))
  (let ((parsed-time ...)) (cond (... ... ...) (t ... ...)))
  (let ((mtime ...)) (require (quote parse-time)) (let (...) (cond ... ...)))
  (cond ((looking-at "/[^/]+/0/") (vc-file-setprop file ... 0) (vc-file-setprop file ... "0") (if set-state ...)) ((looking-at ...) (vc-file-setprop file ... ...) (vc-file-setprop file ... ...) (let ... ... ...)))
  vc-cvs-parse-entry("/scratch/gmorris/emacs/cvs/trunk-orig/lisp/dired.el")
  (cond ((re-search-forward ... nil t) (beginning-of-line) (vc-cvs-parse-entry file) t) (t nil))
  (progn (vc-cvs-get-entries dirname) (goto-char (point-min)) (cond (... ... ... t) (t nil)))
  (unwind-protect (progn (vc-cvs-get-entries dirname) (goto-char ...) (cond ... ...)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))
  (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn ... ... ...) (and ... ...)))
  (with-current-buffer temp-buffer (unwind-protect (progn ... ... ...) (and ... ...)))
  (let ((temp-buffer ...)) (with-current-buffer temp-buffer (unwind-protect ... ...)))
  (with-temp-buffer (vc-cvs-get-entries dirname) (goto-char (point-min)) (cond (... ... ... t) (t nil)))
  (or (string= basename "") (with-temp-buffer (vc-cvs-get-entries dirname) (goto-char ...) (cond ... ...)))
  (if (file-readable-p (expand-file-name "CVS/Entries" dirname)) (or (string= basename "") (with-temp-buffer ... ... ...)) nil)
  (let ((dirname ...) (basename ...) (case-fold-search nil)) (if (file-readable-p ...) (or ... ...) nil))
  vc-cvs-registered("/scratch/gmorris/emacs/cvs/trunk-orig/lisp/dired.el")
  apply(vc-cvs-registered "/scratch/gmorris/emacs/cvs/trunk-orig/lisp/dired.el")
  (cond ((null f) (error "Sorry, %s is not implemented for %s" function-name backend)) ((consp f) (apply ... ... args)) (t (apply f args)))
  (let ((f ...)) (if f (setq f ...) (setq f ...) (push ... ...)) (cond (... ...) (... ...) (t ...)))
  vc-call-backend(CVS registered "/scratch/gmorris/emacs/cvs/trunk-orig/lisp/dired.el")
  (and (vc-call-backend b (quote registered) file) (vc-file-setprop file (quote vc-backend) b) (throw (quote found) t))
  (lambda (b) (and (vc-call-backend b ... file) (vc-file-setprop file ... b) (throw ... t)))(CVS)
  mapc((lambda (b) (and (vc-call-backend b ... file) (vc-file-setprop file ... b) (throw ... t))) (RCS CVS SVN SCCS Bzr Git Hg Mtn Arch))
  (let ((backend ...)) (mapc (lambda ... ...) (if ... vc-handled-backends ...)))
  (catch (quote found) (let (...) (mapc ... ...)) (vc-file-setprop file (quote vc-backend) (quote none)) nil)
  (cond ((and ... ...) nil) ((and ... ...) (funcall handler ... file)) (t (catch ... ... ... nil)))
  (let (handler) (cond (... nil) (... ...) (t ...)))
  vc-registered("/scratch/gmorris/emacs/cvs/trunk-orig/lisp/dired.el")
  (if (vc-registered file-or-list) (vc-file-getprop file-or-list (quote vc-backend)) nil)
  (cond ((eq property ...) nil) (property) (t (if ... ... nil)))
  (let ((property ...)) (cond (... nil) (property) (t ...)))
  (cond ((stringp file-or-list) (let ... ...)) ((and file-or-list ...) (vc-backend ...)) (t nil))
  vc-backend("/scratch/gmorris/emacs/cvs/trunk-orig/lisp/dired.el")
  (progn (vc-backend buffer-file-name))
  (lambda nil (progn (vc-backend buffer-file-name)))()
  funcall((lambda nil (progn (vc-backend buffer-file-name))))
  (if debug-on-error (funcall body) (condition-case err (funcall body) (error ... nil)))
  (let ((body ...)) (if debug-on-error (funcall body) (condition-case err ... ...)))
  (condition-case-no-debug err (progn (vc-backend buffer-file-name)) (error (message "Error: %s" err) nil))
  (with-demoted-errors (vc-backend buffer-file-name))
  (setq backend (with-demoted-errors (vc-backend buffer-file-name)))
  (cond ((setq backend ...) (vc-mode-line buffer-file-name backend) (unless vc-make-backup-files ...) (vc-call-backend backend ...)) ((let ... ...)))
  (let (backend) (cond (... ... ... ...) (...)))
  (progn (vc-file-clearprops buffer-file-name) (add-hook (quote mode-line-hook) (quote vc-mode-line) nil t) (let (backend) (cond ... ...)))
  (if buffer-file-name (progn (vc-file-clearprops buffer-file-name) (add-hook ... ... nil t) (let ... ...)))
  (when buffer-file-name (vc-file-clearprops buffer-file-name) (add-hook (quote mode-line-hook) (quote vc-mode-line) nil t) (let (backend) (cond ... ...)))
  vc-find-file-hook()
  run-hooks(find-file-hook)
  (if nomodes nil (when (and view-read-only view-mode) (view-mode-disable)) (normal-mode t) (and (memq require-final-newline ...) (> ... ...) (/= ... 10) (not ...) (save-excursion ... ...)) (when (and buffer-read-only view-read-only ...) (view-mode-enter)) (run-hooks (quote find-file-hook)))
  (unless nomodes (when (and view-read-only view-mode) (view-mode-disable)) (normal-mode t) (and (memq require-final-newline ...) (> ... ...) (/= ... 10) (not ...) (save-excursion ... ...)) (when (and buffer-read-only view-read-only ...) (view-mode-enter)) (run-hooks (quote find-file-hook)))
  after-find-file(nil t)
  (if rawfile (progn (set-buffer-multibyte nil) (setq buffer-file-coding-system ...) (set-buffer-major-mode buf) (make-local-variable ...) (setq find-file-literally t)) (after-find-file error (not nowarn)))
  (save-current-buffer (set-buffer buf) (kill-local-variable (quote find-file-literally)) (kill-local-variable (quote buffer-file-coding-system)) (kill-local-variable (quote cursor-type)) (let (...) (erase-buffer)) (and (default-value ...) (not rawfile) (set-buffer-multibyte t)) (if rawfile (condition-case nil ... ...) (condition-case nil ... ...)) (if (equal filename buffer-file-name) (setq buffer-file-truename truename) (setq buffer-file-truename ...)) (setq buffer-file-number number) (if find-file-visit-truename (setq buffer-file-name ...)) (setq default-directory (file-name-directory buffer-file-name)) (and backup-enable-predicate (not ...) (progn ... ...)) (if rawfile (progn ... ... ... ... ...) (after-find-file error ...)) (current-buffer))
  (with-current-buffer buf (kill-local-variable (quote find-file-literally)) (kill-local-variable (quote buffer-file-coding-system)) (kill-local-variable (quote cursor-type)) (let (...) (erase-buffer)) (and (default-value ...) (not rawfile) (set-buffer-multibyte t)) (if rawfile (condition-case nil ... ...) (condition-case nil ... ...)) (if (equal filename buffer-file-name) (setq buffer-file-truename truename) (setq buffer-file-truename ...)) (setq buffer-file-number number) (if find-file-visit-truename (setq buffer-file-name ...)) (setq default-directory (file-name-directory buffer-file-name)) (and backup-enable-predicate (not ...) (progn ... ...)) (if rawfile (progn ... ... ... ... ...) (after-find-file error ...)) (current-buffer))
  (let (error) (with-current-buffer buf (kill-local-variable ...) (kill-local-variable ...) (kill-local-variable ...) (let ... ...) (and ... ... ...) (if rawfile ... ...) (if ... ... ...) (setq buffer-file-number number) (if find-file-visit-truename ...) (setq default-directory ...) (and backup-enable-predicate ... ...) (if rawfile ... ...) (current-buffer)))
  find-file-noselect-1(#<buffer dired.el> "/scratch/gmorris/emacs/cvs/trunk-orig/lisp/dired.el" nil nil "/scratch/gmorris/emacs/cvs/trunk-orig/lisp/dired.el" (28542623 2053))
  (if buf (let (nonexistent) (or nowarn ... ...) (with-current-buffer buf ... ...) buf) (setq buf (create-file-buffer filename)) (find-file-noselect-1 buf filename nowarn rawfile truename number))
  (let* ((buf ...) (truename ...) (attributes ...) (number ...) (other ...)) (if other (progn ... ...)) (when (not ...) (abort-if-file-too-large ... "open" filename)) (if buf (let ... ... ... buf) (setq buf ...) (find-file-noselect-1 buf filename nowarn rawfile truename number)))
  (if (and wildcards find-file-wildcards (not ...) (string-match "[[*?]" filename)) (let (... ...) (if ... ... ...)) (let* (... ... ... ... ...) (if other ...) (when ... ...) (if buf ... ... ...)))
  (if (file-directory-p filename) (or (and find-file-run-dired ...) (error "%s is a directory" filename)) (if (and wildcards find-file-wildcards ... ...) (let ... ...) (let* ... ... ... ...)))
  find-file-noselect("/scratch/gmorris/emacs/cvs/trunk-orig/lisp/dired.el")