From unknown Mon Aug 18 18:13:21 2025 X-Loop: help-debbugs@gnu.org Subject: bug#8998: 24.0.50; expand-abbrev goes into infinite loop Resent-From: Richard Kim Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-To: owner@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 05 Jul 2011 00:48:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 8998 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 8998@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.130982687522711 (code B ref -1); Tue, 05 Jul 2011 00:48:01 +0000 Received: (at submit) by debbugs.gnu.org; 5 Jul 2011 00:47:55 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Qdtnu-0005uG-2I for submit@debbugs.gnu.org; Mon, 04 Jul 2011 20:47:54 -0400 Received: from eggs.gnu.org ([140.186.70.92]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Qdtnr-0005u4-Kd for submit@debbugs.gnu.org; Mon, 04 Jul 2011 20:47:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Qdtnk-00024h-9Q for submit@debbugs.gnu.org; Mon, 04 Jul 2011 20:47:46 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=BAYES_00, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, T_DKIM_INVALID, T_TO_NO_BRKTS_FREEMAIL autolearn=unavailable version=3.3.1 Received: from lists.gnu.org ([140.186.70.17]:40717) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qdtnk-00024c-7s for submit@debbugs.gnu.org; Mon, 04 Jul 2011 20:47:44 -0400 Received: from eggs.gnu.org ([140.186.70.92]:59852) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qdtni-0004Ax-A3 for bug-gnu-emacs@gnu.org; Mon, 04 Jul 2011 20:47:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Qdtng-00024B-7y for bug-gnu-emacs@gnu.org; Mon, 04 Jul 2011 20:47:42 -0400 Received: from mail-pz0-f41.google.com ([209.85.210.41]:50527) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qdtnf-000243-Rj for bug-gnu-emacs@gnu.org; Mon, 04 Jul 2011 20:47:40 -0400 Received: by pzk4 with SMTP id 4so2064004pzk.0 for ; Mon, 04 Jul 2011 17:47:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=from:to:subject:date:message-id:mime-version:content-type; bh=k2vBz0saU8C/ht2FxgWjY+vmXpPRdpCE4PsjxNCI1go=; b=VXslboqHxtDLOuxtSRZYa6tOzWeidF54vq4ii7kYNuxjeRkuEGuIIbUSLk4JxrISMk A/DGh6utx+PNBpTFyN43cFjsl2mmgCdV8bNMoz/sdTd7biNzZJ7PZwNOxgk0iv6cFakz EUwqCPPSkIV5KM4qppfc/Kmowx5RNTOJfdErw= Received: by 10.68.48.106 with SMTP id k10mr247296pbn.214.1309826858247; Mon, 04 Jul 2011 17:47:38 -0700 (PDT) Received: from kimr-laptop (static-50-53-5-59.bvtn.or.frontiernet.net [50.53.5.59]) by mx.google.com with ESMTPS id x2sm4174911pbn.45.2011.07.04.17.47.36 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 04 Jul 2011 17:47:37 -0700 (PDT) From: Richard Kim Date: Mon, 04 Jul 2011 17:47:36 -0700 Message-ID: MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 140.186.70.17 X-Spam-Score: -5.9 (-----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -5.9 (-----) This bug report will be sent to the Bug-GNU-Emacs mailing list and the GNU bug tracker at debbugs.gnu.org. Please check that the From: line contains a valid email address. After a delay of up to one day, you should receive an acknowledgement at that address. Please write in English if possible, as the Emacs maintainers usually do not have translators for other languages. Please describe exactly what actions triggered the bug, and the precise symptoms of the bug. If you can, give a recipe starting from `emacs -Q': Abbreviation mode seems to be busted, because turning it on results in emacs going into infinite loop. To see the problem, start emacs-24 (latest bzr version I tested was 104955 dated July 4, 2011) like this emacs24 -q -l abbrev-bug.el where the content of abbrev-bug.el is (setq debug-on-quit t) ;; Load abbrev.el rather than use abbrev.elc, so as to get ;; more useful stack trace. (load-library "abbrev.el") (switch-to-buffer "*scratch*") (abbrev-mode 1) (insert "a") (expand-abbrev) This seems to put emacs into infinite loop, so hit Control-g to take control which results in the stack trace shown below. Emacs 24 bzr version 104562 dated June 11, 2011 does not suffer this problem, so it seems to have been introduced within the past three weeks between June 11 and July 4. Debugger entered--Lisp error: (quit) (and tables (not (symbol-value sym))) (while (and tables (not (symbol-value sym))) (let* ((table (pop tables)) (case-fold (not (abbrev-table-get table :case-fixed)))) (setq tables (append (abbrev-table-get table :parents) tables)) (setq sym (or (intern-soft abbrev table) (when case-fold (let ((sym ...)) (and sym (not ...) sym))))))) (let ((tables (abbrev--active-tables table)) sym) (while (and tables (not (symbol-value sym))) (let* ((table (pop tables)) (case-fold (not (abbrev-table-get table :case-fixed)))) (setq tables (append (abbrev-table-get table :parents) tables)) (setq sym (or (intern-soft abbrev table) (when case-fold (let (...) (and sym ... sym))))))) (if (symbol-value sym) sym)) abbrev-symbol(#("a" 0 1 (fontified nil)) [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...]) (let ((abbrev (abbrev-symbol name table))) (when abbrev (setq enable-fun (abbrev-get abbrev :enable-function)) (and (or (not enable-fun) (funcall enable-fun)) (list abbrev name start end)))) (and (or (not enable-fun) (funcall enable-fun)) (let ((re (abbrev-table-get table :regexp))) (if (null re) (let ((lim (point))) (backward-word 1) (setq start (point)) (forward-word 1) (setq end (min (point) lim))) (when (looking-back re (line-beginning-position)) (setq start (match-beginning 1)) (setq end (match-end 1))))) (setq name (buffer-substring start end)) (let ((abbrev (abbrev-symbol name table))) (when abbrev (setq enable-fun (abbrev-get abbrev :enable-function)) (and (or (not enable-fun) (funcall enable-fun)) (list abbrev name start end))))) (setq res (and (or (not enable-fun) (funcall enable-fun)) (let ((re (abbrev-table-get table :regexp))) (if (null re) (let ((lim (point))) (backward-word 1) (setq start (point)) (forward-word 1) (setq end (min (point) lim))) (when (looking-back re (line-beginning-position)) (setq start (match-beginning 1)) (setq end (match-end 1))))) (setq name (buffer-substring start end)) (let ((abbrev (abbrev-symbol name table))) (when abbrev (setq enable-fun (abbrev-get abbrev :enable-function)) (and (or (not enable-fun) (funcall enable-fun)) (list abbrev name start end)))))) (let* ((table (pop tables)) (enable-fun (abbrev-table-get table :enable-function))) (setq tables (append (abbrev-table-get table :parents) tables)) (setq res (and (or (not enable-fun) (funcall enable-fun)) (let ((re (abbrev-table-get table :regexp))) (if (null re) (let ((lim ...)) (backward-word 1) (setq start (point)) (forward-word 1) (setq end (min ... lim))) (when (looking-back re (line-beginning-position)) (setq start (match-beginning 1)) (setq end (match-end 1))))) (setq name (buffer-substring start end)) (let ((abbrev (abbrev-symbol name table))) (when abbrev (setq enable-fun (abbrev-get abbrev :enable-function)) (and (or (not enable-fun) (funcall enable-fun)) (list abbrev name start end)))))) (goto-char pos)) (while (and tables (not (car res))) (let* ((table (pop tables)) (enable-fun (abbrev-table-get table :enable-function))) (setq tables (append (abbrev-table-get table :parents) tables)) (setq res (and (or (not enable-fun) (funcall enable-fun)) (let ((re (abbrev-table-get table :regexp))) (if (null re) (let (...) (backward-word 1) (setq start ...) (forward-word 1) (setq end ...)) (when (looking-back re ...) (setq start ...) (setq end ...)))) (setq name (buffer-substring start end)) (let ((abbrev (abbrev-symbol name table))) (when abbrev (setq enable-fun (abbrev-get abbrev :enable-function)) (and (or ... ...) (list abbrev name start end)))))) (goto-char pos))) (if abbrev-start-location (progn (setq start abbrev-start-location) (setq abbrev-start-location nil) (if (and (< start (point-max)) (eq (char-after start) 45)) (delete-region start (1+ start))) (skip-syntax-backward " ") (setq end (point)) (when (> end start) (setq name (buffer-substring start end)) (goto-char pos) (list (abbrev-symbol name tables) name start end))) (while (and tables (not (car res))) (let* ((table (pop tables)) (enable-fun (abbrev-table-get table :enable-function))) (setq tables (append (abbrev-table-get table :parents) tables)) (setq res (and (or (not enable-fun) (funcall enable-fun)) (let ((re ...)) (if (null re) (let ... ... ... ... ...) (when ... ... ...))) (setq name (buffer-substring start end)) (let ((abbrev ...)) (when abbrev (setq enable-fun ...) (and ... ...))))) (goto-char pos))) res) (let ((tables (abbrev--active-tables)) (pos (point)) start end name res) (if abbrev-start-location (progn (setq start abbrev-start-location) (setq abbrev-start-location nil) (if (and (< start (point-max)) (eq (char-after start) 45)) (delete-region start (1+ start))) (skip-syntax-backward " ") (setq end (point)) (when (> end start) (setq name (buffer-substring start end)) (goto-char pos) (list (abbrev-symbol name tables) name start end))) (while (and tables (not (car res))) (let* ((table (pop tables)) (enable-fun (abbrev-table-get table :enable-function))) (setq tables (append (abbrev-table-get table :parents) tables)) (setq res (and (or (not enable-fun) (funcall enable-fun)) (let (...) (if ... ... ...)) (setq name (buffer-substring start end)) (let (...) (when abbrev ... ...)))) (goto-char pos))) res)) abbrev--before-point() (let* ((--cl-rest-- (abbrev--before-point)) (sym (pop --cl-rest--)) (name (pop --cl-rest--)) (wordstart (pop --cl-rest--)) (wordend (pop --cl-rest--))) (if --cl-rest-- (signal (quote wrong-number-of-arguments) (list nil (+ 4 (length --cl-rest--))))) (when sym (unless (or noninteractive (window-minibuffer-p (selected-window))) (undo-boundary)) (setq last-abbrev-text name) (setq last-abbrev sym) (setq last-abbrev-location wordstart) (abbrev-insert sym name wordstart wordend))) (progn (let* ((--cl-rest-- (abbrev--before-point)) (sym (pop --cl-rest--)) (name (pop --cl-rest--)) (wordstart (pop --cl-rest--)) (wordend (pop --cl-rest--))) (if --cl-rest-- (signal (quote wrong-number-of-arguments) (list nil (+ 4 (length --cl-rest--))))) (when sym (unless (or noninteractive (window-minibuffer-p (selected-window))) (undo-boundary)) (setq last-abbrev-text name) (setq last-abbrev sym) (setq last-abbrev-location wordstart) (abbrev-insert sym name wordstart wordend)))) (destructuring-bind (&optional sym name wordstart wordend) (abbrev--before-point) (when sym (unless (or noninteractive (window-minibuffer-p (selected-window))) (undo-boundary)) (setq last-abbrev-text name) (setq last-abbrev sym) (setq last-abbrev-location wordstart) (abbrev-insert sym name wordstart wordend))) (closure ((args) (global) (funs) (runrestofhook closure (#2 t) (funs global args) (if (consp funs) (if (eq t (car funs)) (funcall runrestofhook (append global (cdr funs)) nil args) (apply (car funs) (apply-partially (lambda ... ...) (cdr funs) global) args)) (apply (lambda nil (destructuring-bind (&optional sym name wordstart wordend) (abbrev--before-point) (when sym ... ... ... ... ...))) args))) t) nil (destructuring-bind (&optional sym name wordstart wordend) (abbrev--before-point) (when sym (unless (or noninteractive (window-minibuffer-p (selected-window))) (undo-boundary)) (setq last-abbrev-text name) (setq last-abbrev sym) (setq last-abbrev-location wordstart) (abbrev-insert sym name wordstart wordend))))() apply((closure ((args) (global) (funs) (runrestofhook closure (#2 t) (funs global args) (if (consp funs) (if (eq t (car funs)) (funcall runrestofhook (append global (cdr funs)) nil args) (apply (car funs) (apply-partially (lambda ... ...) (cdr funs) global) args)) (apply (lambda nil (destructuring-bind (&optional sym name wordstart wordend) (abbrev--before-point) (when sym ... ... ... ... ...))) args))) t) nil (destructuring-bind (&optional sym name wordstart wordend) (abbrev--before-point) (when sym (unless (or noninteractive (window-minibuffer-p (selected-window))) (undo-boundary)) (setq last-abbrev-text name) (setq last-abbrev sym) (setq last-abbrev-location wordstart) (abbrev-insert sym name wordstart wordend)))) nil) (if (consp funs) (if (eq t (car funs)) (funcall runrestofhook (append global (cdr funs)) nil args) (apply (car funs) (apply-partially (lambda (funs global &rest args) (funcall runrestofhook funs global args)) (cdr funs) global) args)) (apply (lambda nil (destructuring-bind (&optional sym name wordstart wordend) (abbrev--before-point) (when sym (unless (or noninteractive (window-minibuffer-p ...)) (undo-boundary)) (setq last-abbrev-text name) (setq last-abbrev sym) (setq last-abbrev-location wordstart) (abbrev-insert sym name wordstart wordend)))) args)) (closure ((runrestofhook closure #1 (funs global args) (if (consp funs) (if (eq t (car funs)) (funcall runrestofhook (append global (cdr funs)) nil args) (apply (car funs) (apply-partially (lambda ... ...) (cdr funs) global) args)) (apply (lambda nil (destructuring-bind (&optional sym name wordstart wordend) (abbrev--before-point) (when sym ... ... ... ... ...))) args))) t) (funs global args) (if (consp funs) (if (eq t (car funs)) (funcall runrestofhook (append global (cdr funs)) nil args) (apply (car funs) (apply-partially (lambda (funs global &rest args) (funcall runrestofhook funs global args)) (cdr funs) global) args)) (apply (lambda nil (destructuring-bind (&optional sym name wordstart wordend) (abbrev--before-point) (when sym (unless (or noninteractive ...) (undo-boundary)) (setq last-abbrev-text name) (setq last-abbrev sym) (setq last-abbrev-location wordstart) (abbrev-insert sym name wordstart wordend)))) args)))(nil nil nil) funcall((closure ((runrestofhook closure #1 (funs global args) (if (consp funs) (if (eq t (car funs)) (funcall runrestofhook (append global (cdr funs)) nil args) (apply (car funs) (apply-partially (lambda ... ...) (cdr funs) global) args)) (apply (lambda nil (destructuring-bind (&optional sym name wordstart wordend) (abbrev--before-point) (when sym ... ... ... ... ...))) args))) t) (funs global args) (if (consp funs) (if (eq t (car funs)) (funcall runrestofhook (append global (cdr funs)) nil args) (apply (car funs) (apply-partially (lambda (funs global &rest args) (funcall runrestofhook funs global args)) (cdr funs) global) args)) (apply (lambda nil (destructuring-bind (&optional sym name wordstart wordend) (abbrev--before-point) (when sym (unless (or noninteractive ...) (undo-boundary)) (setq last-abbrev-text name) (setq last-abbrev sym) (setq last-abbrev-location wordstart) (abbrev-insert sym name wordstart wordend)))) args))) nil nil nil) (let (runrestofhook) (setq runrestofhook (lambda (funs global args) (if (consp funs) (if (eq t (car funs)) (funcall runrestofhook (append global (cdr funs)) nil args) (apply (car funs) (apply-partially (lambda ... ...) (cdr funs) global) args)) (apply (lambda nil (destructuring-bind (&optional sym name wordstart wordend) (abbrev--before-point) (when sym ... ... ... ... ...))) args)))) (funcall runrestofhook abbrev-expand-functions (if (local-variable-p (quote abbrev-expand-functions)) (default-value (quote abbrev-expand-functions))) (list))) (letrec ((runrestofhook (lambda (funs global args) (if (consp funs) (if (eq t (car funs)) (funcall runrestofhook (append global ...) nil args) (apply (car funs) (apply-partially ... ... global) args)) (apply (lambda nil (destructuring-bind ... ... ...)) args))))) (funcall runrestofhook abbrev-expand-functions (if (local-variable-p (quote abbrev-expand-functions)) (default-value (quote abbrev-expand-functions))) (list))) (with-wrapper-hook abbrev-expand-functions nil (destructuring-bind (&optional sym name wordstart wordend) (abbrev--before-point) (when sym (unless (or noninteractive (window-minibuffer-p (selected-window))) (undo-boundary)) (setq last-abbrev-text name) (setq last-abbrev sym) (setq last-abbrev-location wordstart) (abbrev-insert sym name wordstart wordend)))) expand-abbrev() eval-buffer(# nil "/home/kimr/.emacs24-abbrev-bug" nil t) ; Reading at buffer position 215 load-with-code-conversion("/home/kimr/.emacs24-abbrev-bug" "/home/kimr/.emacs24-abbrev-bug" nil t) load("/home/kimr/.emacs24-abbrev-bug" nil t) command-line-1(("-l" "/home/kimr/.emacs24-abbrev-bug")) command-line() normal-top-level() If Emacs crashed, and you have the Emacs process in the gdb debugger, please include the output from the following gdb commands: `bt full' and `xbacktrace'. For information about debugging Emacs, please read the file /home/kimr/src/emacs-bzr/trunk_20110704/etc/DEBUG. In GNU Emacs 24.0.50.1 (i686-pc-linux-gnu, GTK+ Version 2.24.4) of 2011-07-04 on kimr-laptop Windowing system distributor `The X.Org Foundation', version 11.0.11001000 Important settings: value of $LC_ALL: nil value of $LC_COLLATE: nil value of $LC_CTYPE: nil value of $LC_MESSAGES: nil value of $LC_MONETARY: nil value of $LC_NUMERIC: nil value of $LC_TIME: nil value of $LANG: en_US.UTF-8 value of $XMODIFIERS: nil locale-coding-system: utf-8-unix default enable-multibyte-characters: t Major mode: Debugger Minor modes in effect: tooltip-mode: t mouse-wheel-mode: t tool-bar-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t line-number-mode: t transient-mark-mode: t Recent input: ESC < C-x 1 ESC x r e p o r t - SPC Recent messages: For information about GNU Emacs and the GNU system, type C-h C-a. Loading /u/kimr/src/emacs-bzr/emacs24_latest/lisp/abbrev.el (source)...done Entering debugger... Mark set Load-path shadows: None found. Features: (shadow sort gnus-util mail-extr message sendmail regexp-opt format-spec rfc822 mml mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mailabbrev mail-utils gmm-utils mailheader emacsbug help-mode easymenu view debug easy-mmode cl time-date tooltip ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd tool-bar dnd fontset image fringe lisp-mode register page menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook help simple abbrev minibuffer loaddefs button faces cus-face files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote make-network-process dbusbind dynamic-setting system-font-setting font-render-setting move-toolbar gtk x-toolkit x multi-tty emacs) From unknown Mon Aug 18 18:13:21 2025 X-Loop: help-debbugs@gnu.org Subject: bug#8998: culprit found References: In-Reply-To: Resent-From: Richard Kim Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-To: owner@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 05 Jul 2011 02:15:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 8998 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 8998@debbugs.gnu.org Reply-To: emacs18@gmail.com Received: via spool by 8998-submit@debbugs.gnu.org id=B8998.130983208129905 (code B ref 8998); Tue, 05 Jul 2011 02:15:02 +0000 Received: (at 8998) by debbugs.gnu.org; 5 Jul 2011 02:14:41 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Qdv9s-0007mI-J1 for submit@debbugs.gnu.org; Mon, 04 Jul 2011 22:14:40 -0400 Received: from mail-pv0-f172.google.com ([74.125.83.172]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Qdv9q-0007m5-BJ for 8998@debbugs.gnu.org; Mon, 04 Jul 2011 22:14:39 -0400 Received: by pvh18 with SMTP id 18so5326395pvh.3 for <8998@debbugs.gnu.org>; Mon, 04 Jul 2011 19:14:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=from:from:to:subject:reply-to:date:message-id:mime-version :content-type; bh=mKYhtKNGYL4FnwP2yIfyXrJCP7iV8HDcJbtBNN+vPxg=; b=Cbdc5+f7N9UUdFQi0PuphCfO+pjsgmtpvLbiGs1KKndm8yr3NoSvUC2zC9xngCZN58 pIMj2jisopKP93M5tyd1Xd8LfzUggzH5wDQVObYhVjxuNWDlQ69Z4xeTNGhXwqulKB6J 0jeKR3Z9s6nx64GVSB2vTP9Z/foGgwphWtz9g= Received: by 10.142.139.15 with SMTP id m15mr854109wfd.41.1309832072232; Mon, 04 Jul 2011 19:14:32 -0700 (PDT) Received: from kimr-laptop (static-50-53-5-59.bvtn.or.frontiernet.net [50.53.5.59]) by mx.google.com with ESMTPS id d3sm856328pbh.37.2011.07.04.19.14.30 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 04 Jul 2011 19:14:31 -0700 (PDT) From: emacs18@gmail.com From: Richard Kim Date: Mon, 04 Jul 2011 19:14:30 -0700 Message-ID: MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -4.8 (----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -4.6 (----) I think the infinite loop problem that I reported was introduced by revision 104853 shown below. === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2011-07-01 13:37:00 +0000 +++ lisp/ChangeLog 2011-07-01 16:41:02 +0000 @@ -1,3 +1,8 @@ +2011-07-01 Stefan Monnier + + * emacs-lisp/derived.el (define-derived-mode): Make abbrev-table + inherit from parent. + 2011-07-01 Lars Magne Ingebrigtsen * dired-aux.el (dired-diff): Doc fixup (bug#8816). === modified file 'lisp/emacs-lisp/derived.el' --- lisp/emacs-lisp/derived.el 2011-03-22 20:58:27 +0000 +++ lisp/emacs-lisp/derived.el 2011-07-01 16:41:02 +0000 @@ -253,8 +253,11 @@ `(let ((parent (char-table-parent ,syntax))) (unless (and parent (not (eq parent (standard-syntax-table)))) - (set-char-table-parent ,syntax (syntax-table))))))) - + (set-char-table-parent ,syntax (syntax-table))))) + ,(when declare-abbrev + `(unless (abbrev-table-get ,abbrev :parents) + (abbrev-table-put ,abbrev :parents + (list local-abbrev-table)))))) (use-local-map ,map) ,(when syntax `(set-syntax-table ,syntax)) ,(when abbrev `(setq local-abbrev-table ,abbrev)) From unknown Mon Aug 18 18:13:21 2025 X-Loop: help-debbugs@gnu.org Subject: bug#8998: further analysis of the problem References: In-Reply-To: Resent-From: Richard Kim Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-To: owner@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 05 Jul 2011 03:51:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 8998 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 8998@debbugs.gnu.org Reply-To: emacs18@gmail.com Received: via spool by 8998-submit@debbugs.gnu.org id=B8998.13098378425600 (code B ref 8998); Tue, 05 Jul 2011 03:51:02 +0000 Received: (at 8998) by debbugs.gnu.org; 5 Jul 2011 03:50:42 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Qdwen-0001SH-JI for submit@debbugs.gnu.org; Mon, 04 Jul 2011 23:50:41 -0400 Received: from mail-pz0-f44.google.com ([209.85.210.44]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Qdwel-0001S4-Oo for 8998@debbugs.gnu.org; Mon, 04 Jul 2011 23:50:40 -0400 Received: by pzk5 with SMTP id 5so1122131pzk.3 for <8998@debbugs.gnu.org>; Mon, 04 Jul 2011 20:50:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=from:from:to:subject:reply-to:date:message-id:mime-version :content-type; bh=ckRPLOPu8kv5sXVqd1XzFLrs6PSFfuk0W7Ytv6wjHe0=; b=nBKoWqnn1AL+HaPaKp5przsU1nHdCY+4OkHHkh/GNenAr/hq2bpAfCp0bCJnwad69S lRvNKc7Z5LHrmIotMknn1zRniJzi0YQLlcgmHkZ7OoVoCrxTf84/xt+MljbT336N6fgK Pq/Usk95sbFkAE9p7GGuQZ/E6Q2wXiJGdTpuc= Received: by 10.68.39.39 with SMTP id m7mr9419616pbk.54.1309837833765; Mon, 04 Jul 2011 20:50:33 -0700 (PDT) Received: from kimr-laptop (static-50-53-5-59.bvtn.or.frontiernet.net [50.53.5.59]) by mx.google.com with ESMTPS id v9sm2273143pbm.31.2011.07.04.20.50.32 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 04 Jul 2011 20:50:33 -0700 (PDT) From: emacs18@gmail.com From: Richard Kim Date: Mon, 04 Jul 2011 20:50:32 -0700 Message-ID: MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -4.5 (----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -4.4 (----) I did some further investigation and have more information to share. The recent change made in `define-derived-mode' adds :parents abbrev property to the derived mode's abbrev table, e.g., `lisp-interaction-mode-abbrev-table'. Unfortunately this results in cyclic data where :parent abbrev property of lisp-interaction-mode-abbrev-table is itself, i.e., the following is true: (eq lisp-interaction-mode-abbrev-table (car (abbrev-table-get lisp-interaction-mode-abbrev-table :parents))) This cyclic relationship (i.e., being its own parent) causes infinite loop within `abbrev-symbol' which has code similar to this: (while tables (setq table (pop tables)) (setq tables (append (abbrev-table-get table :parents) tables)) ...) This loop within `abbrev-symbol' in conjunction with lisp-interaction-mode-abbrev-table being its own parent causes the infinite loop. Why is `lisp-interaction-mode-abbrev-table' its own parent? I think the answer is that the following items have something to do with it. A. lisp-interaction-mode and emacs-lisp-mode are both defined via define-derived-mode macro. B. Both modes call `lisp-mode-variables' utility function which sets local-abbrev-table. C. define-derived-mode macro uses local-abbrev-table as the value of parent *before* setting it, i.e., it uses the value of local-abbrev-table (whatever it is) as the parent! I hope this helps. From unknown Mon Aug 18 18:13:21 2025 X-Loop: help-debbugs@gnu.org Subject: bug#8998: #8999 seems to be duplicate of #8998 References: In-Reply-To: Resent-From: Richard Kim Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-To: owner@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 05 Jul 2011 15:34:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 8998 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 8998@debbugs.gnu.org Received: via spool by 8998-submit@debbugs.gnu.org id=B8998.13098799879537 (code B ref 8998); Tue, 05 Jul 2011 15:34:01 +0000 Received: (at 8998) by debbugs.gnu.org; 5 Jul 2011 15:33:07 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Qe7cY-0002Tm-Rw for submit@debbugs.gnu.org; Tue, 05 Jul 2011 11:33:07 -0400 Received: from mail-iw0-f172.google.com ([209.85.214.172]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Qe7cX-0002TK-6g for 8998@debbugs.gnu.org; Tue, 05 Jul 2011 11:33:05 -0400 Received: by iwn39 with SMTP id 39so5398173iwn.3 for <8998@debbugs.gnu.org>; Tue, 05 Jul 2011 08:32:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; bh=KQvaduQvOlVNMfveSq98XrKjg0NTMQpW3ZAobD4xZZg=; b=foCVgELVEuJSGV77mVzii3dKfHEXfu5jhRH99JHQGYZAo1eZLXKdY75yaBbTd3ECKt kSgdMj2Xeb67W0E9yJVB7M2N/TGE/r6v8Sbk0XMua826alFm7ipIW1wgFwmGLGHyVTLL nznJxeYnn78R5bhdBctt7sZtNEtMStBEelVHY= MIME-Version: 1.0 Received: by 10.42.230.138 with SMTP id jm10mr7755005icb.451.1309879979452; Tue, 05 Jul 2011 08:32:59 -0700 (PDT) Received: by 10.231.11.77 with HTTP; Tue, 5 Jul 2011 08:32:59 -0700 (PDT) Date: Tue, 5 Jul 2011 08:32:59 -0700 Message-ID: From: Richard Kim Content-Type: multipart/alternative; boundary=20cf3056418fdfa8a104a754320b X-Spam-Score: -3.6 (---) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -3.6 (---) --20cf3056418fdfa8a104a754320b Content-Type: text/plain; charset=ISO-8859-1 Both #8998 and #8999 report inifinite loop with abbrev mode. See the analysis at the bottom of #8998 for the cause of this problem. --20cf3056418fdfa8a104a754320b Content-Type: text/html; charset=ISO-8859-1 Both #8998 and #8999 report inifinite loop with abbrev mode.

See the analysis at the bottom of #8998 for the cause of this problem.

--20cf3056418fdfa8a104a754320b-- From unknown Mon Aug 18 18:13:21 2025 X-Loop: help-debbugs@gnu.org Subject: bug#8998: further analysis of the problem Resent-From: Stefan Monnier Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-To: owner@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 05 Jul 2011 18:29:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 8998 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: emacs18@gmail.com Cc: 8998@debbugs.gnu.org Received: via spool by 8998-submit@debbugs.gnu.org id=B8998.130989053330942 (code B ref 8998); Tue, 05 Jul 2011 18:29:01 +0000 Received: (at 8998) by debbugs.gnu.org; 5 Jul 2011 18:28:53 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QeAMf-000830-C3 for submit@debbugs.gnu.org; Tue, 05 Jul 2011 14:28:53 -0400 Received: from ironport2-out.teksavvy.com ([206.248.154.181] helo=ironport2-out.pppoe.ca) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QeAMc-00082n-D6 for 8998@debbugs.gnu.org; Tue, 05 Jul 2011 14:28:51 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AskHAIxXE05FxIxr/2dsb2JhbABTmROOdXiIesI7hjYEnlyELA X-IronPort-AV: E=Sophos;i="4.65,481,1304308800"; d="scan'208";a="120558449" Received: from 69-196-140-107.dsl.teksavvy.com (HELO pastel.home) ([69.196.140.107]) by ironport2-out.pppoe.ca with ESMTP/TLS/ADH-AES256-SHA; 05 Jul 2011 14:28:44 -0400 Received: by pastel.home (Postfix, from userid 20848) id EC909592B2; Tue, 5 Jul 2011 14:28:43 -0400 (EDT) From: Stefan Monnier Message-ID: References: Date: Tue, 05 Jul 2011 14:28:43 -0400 In-Reply-To: (emacs's message of "Mon, 04 Jul 2011 20:50:32 -0700") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.1 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.1 (--) > Why is `lisp-interaction-mode-abbrev-table' its own parent? I've installed the patch below which I believe fixes the problem. Can you confirm that it fixes the problem for you? Stefan === modified file 'lisp/emacs-lisp/derived.el' --- lisp/emacs-lisp/derived.el 2011-07-01 16:41:02 +0000 +++ lisp/emacs-lisp/derived.el 2011-07-05 18:23:08 +0000 @@ -255,7 +255,10 @@ (not (eq parent (standard-syntax-table)))) (set-char-table-parent ,syntax (syntax-table))))) ,(when declare-abbrev - `(unless (abbrev-table-get ,abbrev :parents) + `(unless (or (abbrev-table-get ,abbrev :parents) + ;; This can happen if the major mode defines + ;; the abbrev-table to be its parent's. + (eq ,abbrev local-abbrev-table)) (abbrev-table-put ,abbrev :parents (list local-abbrev-table)))))) (use-local-map ,map) === modified file 'lisp/emacs-lisp/lisp-mode.el' --- lisp/emacs-lisp/lisp-mode.el 2011-06-28 12:09:43 +0000 +++ lisp/emacs-lisp/lisp-mode.el 2011-07-05 16:14:45 +0000 @@ -525,7 +525,6 @@ "Keymap for Lisp Interaction mode. All commands in `lisp-mode-shared-map' are inherited by this map.") -(defvar lisp-interaction-mode-abbrev-table lisp-mode-abbrev-table) (define-derived-mode lisp-interaction-mode emacs-lisp-mode "Lisp Interaction" "Major mode for typing and evaluating Lisp forms. Like Lisp mode except that \\[eval-print-last-sexp] evals the Lisp expression From debbugs-submit-bounces@debbugs.gnu.org Tue Jul 05 15:20:56 2011 Received: (at control) by debbugs.gnu.org; 5 Jul 2011 19:20:56 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QeBB1-0002VB-Ph for submit@debbugs.gnu.org; Tue, 05 Jul 2011 15:20:55 -0400 Received: from ironport2-out.teksavvy.com ([206.248.154.181] helo=ironport2-out.pppoe.ca) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QeBAy-0002Ut-EB; Tue, 05 Jul 2011 15:20:52 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av0EAERjE05FxIxr/2dsb2JhbABTEKd5eIh6wnmGNgSeXINZUw X-IronPort-AV: E=Sophos;i="4.65,481,1304308800"; d="scan'208";a="120564638" Received: from 69-196-140-107.dsl.teksavvy.com (HELO pastel.home) ([69.196.140.107]) by ironport2-out.pppoe.ca with ESMTP/TLS/ADH-AES256-SHA; 05 Jul 2011 15:20:46 -0400 Received: by pastel.home (Postfix, from userid 20848) id 21AFD592B2; Tue, 5 Jul 2011 15:20:46 -0400 (EDT) From: Stefan Monnier To: Tim Cross Subject: Re: bug#8999: 24.0.50; abbrev-mode infinite loop Message-ID: References: <871uy5b8nm.fsf@blind-mole.une.edu.au> Date: Tue, 05 Jul 2011 15:20:46 -0400 In-Reply-To: <871uy5b8nm.fsf@blind-mole.une.edu.au> (Tim Cross's message of "Tue, 05 Jul 2011 15:26:05 +1000") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.1 (--) X-Debbugs-Envelope-To: control Cc: 8999@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.1 (--) forcemerge 8998 8999 thanks > There appears to be an infinite loop issue with the current emacs bzr > sources and abbrev-mode. When abbrev-mode is enabled, typing any word > and hitting an end of word marker (i.e. space) puts emacs into an > infinite loop. Hitting C-g breaks out of the loop, but you cannot enter > an end of word character (i.e. something that triggers an abbrev > expansion lookup) without the loop. I believe I've fixed this problem now in the trunk. Please confirm, Stefan From unknown Mon Aug 18 18:13:21 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.427 (Entity 5.427) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Richard Kim Subject: bug#8998: closed (Re: bug#8998: further analysis of the problem) Message-ID: References: X-Gnu-PR-Message: they-closed 8998 X-Gnu-PR-Package: emacs Reply-To: 8998@debbugs.gnu.org Date: Wed, 06 Jul 2011 01:10:04 +0000 Content-Type: multipart/mixed; boundary="----------=_1309914604-14083-1" This is a multi-part message in MIME format... ------------=_1309914604-14083-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #8998: 24.0.50; expand-abbrev goes into infinite loop which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 8998@debbugs.gnu.org. --=20 8998: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D8998 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1309914604-14083-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 8998-done) by debbugs.gnu.org; 6 Jul 2011 01:09:51 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QeGcg-0003ec-SW for submit@debbugs.gnu.org; Tue, 05 Jul 2011 21:09:51 -0400 Received: from ironport2-out.teksavvy.com ([206.248.154.183] helo=ironport2-out.pppoe.ca) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QeGcf-0003eR-Cq for 8998-done@debbugs.gnu.org; Tue, 05 Jul 2011 21:09:49 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AhQKAEq1E05FxIV4/2dsb2JhbABTmReOdniIesQFhjYEnlyELA X-IronPort-AV: E=Sophos;i="4.65,482,1304308800"; d="scan'208";a="120616417" Received: from 69-196-133-120.dsl.teksavvy.com (HELO pastel.home) ([69.196.133.120]) by ironport2-out.pppoe.ca with ESMTP/TLS/ADH-AES256-SHA; 05 Jul 2011 21:09:43 -0400 Received: by pastel.home (Postfix, from userid 20848) id D3244592B2; Tue, 5 Jul 2011 21:09:39 -0400 (EDT) From: Stefan Monnier To: 8998-done@debbugs.gnu.org Subject: Re: bug#8998: further analysis of the problem Message-ID: References: Date: Tue, 05 Jul 2011 21:09:39 -0400 In-Reply-To: (emacs's message of "Tue, 05 Jul 2011 13:23:12 -0700") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.1 (--) X-Debbugs-Envelope-To: 8998-done X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.1 (--) > Yes, it does the solve the problem. Thanks. Great, thanks, Stefan ------------=_1309914604-14083-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 5 Jul 2011 00:47:55 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Qdtnu-0005uG-2I for submit@debbugs.gnu.org; Mon, 04 Jul 2011 20:47:54 -0400 Received: from eggs.gnu.org ([140.186.70.92]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Qdtnr-0005u4-Kd for submit@debbugs.gnu.org; Mon, 04 Jul 2011 20:47:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Qdtnk-00024h-9Q for submit@debbugs.gnu.org; Mon, 04 Jul 2011 20:47:46 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=BAYES_00, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, RCVD_IN_DNSWL_LOW, T_DKIM_INVALID, T_TO_NO_BRKTS_FREEMAIL autolearn=unavailable version=3.3.1 Received: from lists.gnu.org ([140.186.70.17]:40717) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qdtnk-00024c-7s for submit@debbugs.gnu.org; Mon, 04 Jul 2011 20:47:44 -0400 Received: from eggs.gnu.org ([140.186.70.92]:59852) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qdtni-0004Ax-A3 for bug-gnu-emacs@gnu.org; Mon, 04 Jul 2011 20:47:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Qdtng-00024B-7y for bug-gnu-emacs@gnu.org; Mon, 04 Jul 2011 20:47:42 -0400 Received: from mail-pz0-f41.google.com ([209.85.210.41]:50527) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qdtnf-000243-Rj for bug-gnu-emacs@gnu.org; Mon, 04 Jul 2011 20:47:40 -0400 Received: by pzk4 with SMTP id 4so2064004pzk.0 for ; Mon, 04 Jul 2011 17:47:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=from:to:subject:date:message-id:mime-version:content-type; bh=k2vBz0saU8C/ht2FxgWjY+vmXpPRdpCE4PsjxNCI1go=; b=VXslboqHxtDLOuxtSRZYa6tOzWeidF54vq4ii7kYNuxjeRkuEGuIIbUSLk4JxrISMk A/DGh6utx+PNBpTFyN43cFjsl2mmgCdV8bNMoz/sdTd7biNzZJ7PZwNOxgk0iv6cFakz EUwqCPPSkIV5KM4qppfc/Kmowx5RNTOJfdErw= Received: by 10.68.48.106 with SMTP id k10mr247296pbn.214.1309826858247; Mon, 04 Jul 2011 17:47:38 -0700 (PDT) Received: from kimr-laptop (static-50-53-5-59.bvtn.or.frontiernet.net [50.53.5.59]) by mx.google.com with ESMTPS id x2sm4174911pbn.45.2011.07.04.17.47.36 (version=TLSv1/SSLv3 cipher=OTHER); Mon, 04 Jul 2011 17:47:37 -0700 (PDT) From: Richard Kim To: bug-gnu-emacs@gnu.org Subject: 24.0.50; expand-abbrev goes into infinite loop Date: Mon, 04 Jul 2011 17:47:36 -0700 Message-ID: MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 140.186.70.17 X-Spam-Score: -5.9 (-----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -5.9 (-----) This bug report will be sent to the Bug-GNU-Emacs mailing list and the GNU bug tracker at debbugs.gnu.org. Please check that the From: line contains a valid email address. After a delay of up to one day, you should receive an acknowledgement at that address. Please write in English if possible, as the Emacs maintainers usually do not have translators for other languages. Please describe exactly what actions triggered the bug, and the precise symptoms of the bug. If you can, give a recipe starting from `emacs -Q': Abbreviation mode seems to be busted, because turning it on results in emacs going into infinite loop. To see the problem, start emacs-24 (latest bzr version I tested was 104955 dated July 4, 2011) like this emacs24 -q -l abbrev-bug.el where the content of abbrev-bug.el is (setq debug-on-quit t) ;; Load abbrev.el rather than use abbrev.elc, so as to get ;; more useful stack trace. (load-library "abbrev.el") (switch-to-buffer "*scratch*") (abbrev-mode 1) (insert "a") (expand-abbrev) This seems to put emacs into infinite loop, so hit Control-g to take control which results in the stack trace shown below. Emacs 24 bzr version 104562 dated June 11, 2011 does not suffer this problem, so it seems to have been introduced within the past three weeks between June 11 and July 4. Debugger entered--Lisp error: (quit) (and tables (not (symbol-value sym))) (while (and tables (not (symbol-value sym))) (let* ((table (pop tables)) (case-fold (not (abbrev-table-get table :case-fixed)))) (setq tables (append (abbrev-table-get table :parents) tables)) (setq sym (or (intern-soft abbrev table) (when case-fold (let ((sym ...)) (and sym (not ...) sym))))))) (let ((tables (abbrev--active-tables table)) sym) (while (and tables (not (symbol-value sym))) (let* ((table (pop tables)) (case-fold (not (abbrev-table-get table :case-fixed)))) (setq tables (append (abbrev-table-get table :parents) tables)) (setq sym (or (intern-soft abbrev table) (when case-fold (let (...) (and sym ... sym))))))) (if (symbol-value sym) sym)) abbrev-symbol(#("a" 0 1 (fontified nil)) [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...]) (let ((abbrev (abbrev-symbol name table))) (when abbrev (setq enable-fun (abbrev-get abbrev :enable-function)) (and (or (not enable-fun) (funcall enable-fun)) (list abbrev name start end)))) (and (or (not enable-fun) (funcall enable-fun)) (let ((re (abbrev-table-get table :regexp))) (if (null re) (let ((lim (point))) (backward-word 1) (setq start (point)) (forward-word 1) (setq end (min (point) lim))) (when (looking-back re (line-beginning-position)) (setq start (match-beginning 1)) (setq end (match-end 1))))) (setq name (buffer-substring start end)) (let ((abbrev (abbrev-symbol name table))) (when abbrev (setq enable-fun (abbrev-get abbrev :enable-function)) (and (or (not enable-fun) (funcall enable-fun)) (list abbrev name start end))))) (setq res (and (or (not enable-fun) (funcall enable-fun)) (let ((re (abbrev-table-get table :regexp))) (if (null re) (let ((lim (point))) (backward-word 1) (setq start (point)) (forward-word 1) (setq end (min (point) lim))) (when (looking-back re (line-beginning-position)) (setq start (match-beginning 1)) (setq end (match-end 1))))) (setq name (buffer-substring start end)) (let ((abbrev (abbrev-symbol name table))) (when abbrev (setq enable-fun (abbrev-get abbrev :enable-function)) (and (or (not enable-fun) (funcall enable-fun)) (list abbrev name start end)))))) (let* ((table (pop tables)) (enable-fun (abbrev-table-get table :enable-function))) (setq tables (append (abbrev-table-get table :parents) tables)) (setq res (and (or (not enable-fun) (funcall enable-fun)) (let ((re (abbrev-table-get table :regexp))) (if (null re) (let ((lim ...)) (backward-word 1) (setq start (point)) (forward-word 1) (setq end (min ... lim))) (when (looking-back re (line-beginning-position)) (setq start (match-beginning 1)) (setq end (match-end 1))))) (setq name (buffer-substring start end)) (let ((abbrev (abbrev-symbol name table))) (when abbrev (setq enable-fun (abbrev-get abbrev :enable-function)) (and (or (not enable-fun) (funcall enable-fun)) (list abbrev name start end)))))) (goto-char pos)) (while (and tables (not (car res))) (let* ((table (pop tables)) (enable-fun (abbrev-table-get table :enable-function))) (setq tables (append (abbrev-table-get table :parents) tables)) (setq res (and (or (not enable-fun) (funcall enable-fun)) (let ((re (abbrev-table-get table :regexp))) (if (null re) (let (...) (backward-word 1) (setq start ...) (forward-word 1) (setq end ...)) (when (looking-back re ...) (setq start ...) (setq end ...)))) (setq name (buffer-substring start end)) (let ((abbrev (abbrev-symbol name table))) (when abbrev (setq enable-fun (abbrev-get abbrev :enable-function)) (and (or ... ...) (list abbrev name start end)))))) (goto-char pos))) (if abbrev-start-location (progn (setq start abbrev-start-location) (setq abbrev-start-location nil) (if (and (< start (point-max)) (eq (char-after start) 45)) (delete-region start (1+ start))) (skip-syntax-backward " ") (setq end (point)) (when (> end start) (setq name (buffer-substring start end)) (goto-char pos) (list (abbrev-symbol name tables) name start end))) (while (and tables (not (car res))) (let* ((table (pop tables)) (enable-fun (abbrev-table-get table :enable-function))) (setq tables (append (abbrev-table-get table :parents) tables)) (setq res (and (or (not enable-fun) (funcall enable-fun)) (let ((re ...)) (if (null re) (let ... ... ... ... ...) (when ... ... ...))) (setq name (buffer-substring start end)) (let ((abbrev ...)) (when abbrev (setq enable-fun ...) (and ... ...))))) (goto-char pos))) res) (let ((tables (abbrev--active-tables)) (pos (point)) start end name res) (if abbrev-start-location (progn (setq start abbrev-start-location) (setq abbrev-start-location nil) (if (and (< start (point-max)) (eq (char-after start) 45)) (delete-region start (1+ start))) (skip-syntax-backward " ") (setq end (point)) (when (> end start) (setq name (buffer-substring start end)) (goto-char pos) (list (abbrev-symbol name tables) name start end))) (while (and tables (not (car res))) (let* ((table (pop tables)) (enable-fun (abbrev-table-get table :enable-function))) (setq tables (append (abbrev-table-get table :parents) tables)) (setq res (and (or (not enable-fun) (funcall enable-fun)) (let (...) (if ... ... ...)) (setq name (buffer-substring start end)) (let (...) (when abbrev ... ...)))) (goto-char pos))) res)) abbrev--before-point() (let* ((--cl-rest-- (abbrev--before-point)) (sym (pop --cl-rest--)) (name (pop --cl-rest--)) (wordstart (pop --cl-rest--)) (wordend (pop --cl-rest--))) (if --cl-rest-- (signal (quote wrong-number-of-arguments) (list nil (+ 4 (length --cl-rest--))))) (when sym (unless (or noninteractive (window-minibuffer-p (selected-window))) (undo-boundary)) (setq last-abbrev-text name) (setq last-abbrev sym) (setq last-abbrev-location wordstart) (abbrev-insert sym name wordstart wordend))) (progn (let* ((--cl-rest-- (abbrev--before-point)) (sym (pop --cl-rest--)) (name (pop --cl-rest--)) (wordstart (pop --cl-rest--)) (wordend (pop --cl-rest--))) (if --cl-rest-- (signal (quote wrong-number-of-arguments) (list nil (+ 4 (length --cl-rest--))))) (when sym (unless (or noninteractive (window-minibuffer-p (selected-window))) (undo-boundary)) (setq last-abbrev-text name) (setq last-abbrev sym) (setq last-abbrev-location wordstart) (abbrev-insert sym name wordstart wordend)))) (destructuring-bind (&optional sym name wordstart wordend) (abbrev--before-point) (when sym (unless (or noninteractive (window-minibuffer-p (selected-window))) (undo-boundary)) (setq last-abbrev-text name) (setq last-abbrev sym) (setq last-abbrev-location wordstart) (abbrev-insert sym name wordstart wordend))) (closure ((args) (global) (funs) (runrestofhook closure (#2 t) (funs global args) (if (consp funs) (if (eq t (car funs)) (funcall runrestofhook (append global (cdr funs)) nil args) (apply (car funs) (apply-partially (lambda ... ...) (cdr funs) global) args)) (apply (lambda nil (destructuring-bind (&optional sym name wordstart wordend) (abbrev--before-point) (when sym ... ... ... ... ...))) args))) t) nil (destructuring-bind (&optional sym name wordstart wordend) (abbrev--before-point) (when sym (unless (or noninteractive (window-minibuffer-p (selected-window))) (undo-boundary)) (setq last-abbrev-text name) (setq last-abbrev sym) (setq last-abbrev-location wordstart) (abbrev-insert sym name wordstart wordend))))() apply((closure ((args) (global) (funs) (runrestofhook closure (#2 t) (funs global args) (if (consp funs) (if (eq t (car funs)) (funcall runrestofhook (append global (cdr funs)) nil args) (apply (car funs) (apply-partially (lambda ... ...) (cdr funs) global) args)) (apply (lambda nil (destructuring-bind (&optional sym name wordstart wordend) (abbrev--before-point) (when sym ... ... ... ... ...))) args))) t) nil (destructuring-bind (&optional sym name wordstart wordend) (abbrev--before-point) (when sym (unless (or noninteractive (window-minibuffer-p (selected-window))) (undo-boundary)) (setq last-abbrev-text name) (setq last-abbrev sym) (setq last-abbrev-location wordstart) (abbrev-insert sym name wordstart wordend)))) nil) (if (consp funs) (if (eq t (car funs)) (funcall runrestofhook (append global (cdr funs)) nil args) (apply (car funs) (apply-partially (lambda (funs global &rest args) (funcall runrestofhook funs global args)) (cdr funs) global) args)) (apply (lambda nil (destructuring-bind (&optional sym name wordstart wordend) (abbrev--before-point) (when sym (unless (or noninteractive (window-minibuffer-p ...)) (undo-boundary)) (setq last-abbrev-text name) (setq last-abbrev sym) (setq last-abbrev-location wordstart) (abbrev-insert sym name wordstart wordend)))) args)) (closure ((runrestofhook closure #1 (funs global args) (if (consp funs) (if (eq t (car funs)) (funcall runrestofhook (append global (cdr funs)) nil args) (apply (car funs) (apply-partially (lambda ... ...) (cdr funs) global) args)) (apply (lambda nil (destructuring-bind (&optional sym name wordstart wordend) (abbrev--before-point) (when sym ... ... ... ... ...))) args))) t) (funs global args) (if (consp funs) (if (eq t (car funs)) (funcall runrestofhook (append global (cdr funs)) nil args) (apply (car funs) (apply-partially (lambda (funs global &rest args) (funcall runrestofhook funs global args)) (cdr funs) global) args)) (apply (lambda nil (destructuring-bind (&optional sym name wordstart wordend) (abbrev--before-point) (when sym (unless (or noninteractive ...) (undo-boundary)) (setq last-abbrev-text name) (setq last-abbrev sym) (setq last-abbrev-location wordstart) (abbrev-insert sym name wordstart wordend)))) args)))(nil nil nil) funcall((closure ((runrestofhook closure #1 (funs global args) (if (consp funs) (if (eq t (car funs)) (funcall runrestofhook (append global (cdr funs)) nil args) (apply (car funs) (apply-partially (lambda ... ...) (cdr funs) global) args)) (apply (lambda nil (destructuring-bind (&optional sym name wordstart wordend) (abbrev--before-point) (when sym ... ... ... ... ...))) args))) t) (funs global args) (if (consp funs) (if (eq t (car funs)) (funcall runrestofhook (append global (cdr funs)) nil args) (apply (car funs) (apply-partially (lambda (funs global &rest args) (funcall runrestofhook funs global args)) (cdr funs) global) args)) (apply (lambda nil (destructuring-bind (&optional sym name wordstart wordend) (abbrev--before-point) (when sym (unless (or noninteractive ...) (undo-boundary)) (setq last-abbrev-text name) (setq last-abbrev sym) (setq last-abbrev-location wordstart) (abbrev-insert sym name wordstart wordend)))) args))) nil nil nil) (let (runrestofhook) (setq runrestofhook (lambda (funs global args) (if (consp funs) (if (eq t (car funs)) (funcall runrestofhook (append global (cdr funs)) nil args) (apply (car funs) (apply-partially (lambda ... ...) (cdr funs) global) args)) (apply (lambda nil (destructuring-bind (&optional sym name wordstart wordend) (abbrev--before-point) (when sym ... ... ... ... ...))) args)))) (funcall runrestofhook abbrev-expand-functions (if (local-variable-p (quote abbrev-expand-functions)) (default-value (quote abbrev-expand-functions))) (list))) (letrec ((runrestofhook (lambda (funs global args) (if (consp funs) (if (eq t (car funs)) (funcall runrestofhook (append global ...) nil args) (apply (car funs) (apply-partially ... ... global) args)) (apply (lambda nil (destructuring-bind ... ... ...)) args))))) (funcall runrestofhook abbrev-expand-functions (if (local-variable-p (quote abbrev-expand-functions)) (default-value (quote abbrev-expand-functions))) (list))) (with-wrapper-hook abbrev-expand-functions nil (destructuring-bind (&optional sym name wordstart wordend) (abbrev--before-point) (when sym (unless (or noninteractive (window-minibuffer-p (selected-window))) (undo-boundary)) (setq last-abbrev-text name) (setq last-abbrev sym) (setq last-abbrev-location wordstart) (abbrev-insert sym name wordstart wordend)))) expand-abbrev() eval-buffer(# nil "/home/kimr/.emacs24-abbrev-bug" nil t) ; Reading at buffer position 215 load-with-code-conversion("/home/kimr/.emacs24-abbrev-bug" "/home/kimr/.emacs24-abbrev-bug" nil t) load("/home/kimr/.emacs24-abbrev-bug" nil t) command-line-1(("-l" "/home/kimr/.emacs24-abbrev-bug")) command-line() normal-top-level() If Emacs crashed, and you have the Emacs process in the gdb debugger, please include the output from the following gdb commands: `bt full' and `xbacktrace'. For information about debugging Emacs, please read the file /home/kimr/src/emacs-bzr/trunk_20110704/etc/DEBUG. In GNU Emacs 24.0.50.1 (i686-pc-linux-gnu, GTK+ Version 2.24.4) of 2011-07-04 on kimr-laptop Windowing system distributor `The X.Org Foundation', version 11.0.11001000 Important settings: value of $LC_ALL: nil value of $LC_COLLATE: nil value of $LC_CTYPE: nil value of $LC_MESSAGES: nil value of $LC_MONETARY: nil value of $LC_NUMERIC: nil value of $LC_TIME: nil value of $LANG: en_US.UTF-8 value of $XMODIFIERS: nil locale-coding-system: utf-8-unix default enable-multibyte-characters: t Major mode: Debugger Minor modes in effect: tooltip-mode: t mouse-wheel-mode: t tool-bar-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t line-number-mode: t transient-mark-mode: t Recent input: ESC < C-x 1 ESC x r e p o r t - SPC Recent messages: For information about GNU Emacs and the GNU system, type C-h C-a. Loading /u/kimr/src/emacs-bzr/emacs24_latest/lisp/abbrev.el (source)...done Entering debugger... Mark set Load-path shadows: None found. Features: (shadow sort gnus-util mail-extr message sendmail regexp-opt format-spec rfc822 mml mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mailabbrev mail-utils gmm-utils mailheader emacsbug help-mode easymenu view debug easy-mmode cl time-date tooltip ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd tool-bar dnd fontset image fringe lisp-mode register page menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook help simple abbrev minibuffer loaddefs button faces cus-face files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote make-network-process dbusbind dynamic-setting system-font-setting font-render-setting move-toolbar gtk x-toolkit x multi-tty emacs) ------------=_1309914604-14083-1-- From unknown Mon Aug 18 18:13:21 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.427 (Entity 5.427) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Tim Cross Subject: bug#8999: closed (Re: bug#8998: further analysis of the problem) Message-ID: References: <871uy5b8nm.fsf@blind-mole.une.edu.au> X-Gnu-PR-Message: they-closed 8999 X-Gnu-PR-Package: emacs Reply-To: 8999@debbugs.gnu.org Date: Wed, 06 Jul 2011 01:10:05 +0000 Content-Type: multipart/mixed; boundary="----------=_1309914605-14083-3" This is a multi-part message in MIME format... ------------=_1309914605-14083-3 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #8998: 24.0.50; abbrev-mode infinite loop which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 8999@debbugs.gnu.org. --=20 8998: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D8998 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1309914605-14083-3 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 8998-done) by debbugs.gnu.org; 6 Jul 2011 01:09:51 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QeGcg-0003ec-SW for submit@debbugs.gnu.org; Tue, 05 Jul 2011 21:09:51 -0400 Received: from ironport2-out.teksavvy.com ([206.248.154.183] helo=ironport2-out.pppoe.ca) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QeGcf-0003eR-Cq for 8998-done@debbugs.gnu.org; Tue, 05 Jul 2011 21:09:49 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AhQKAEq1E05FxIV4/2dsb2JhbABTmReOdniIesQFhjYEnlyELA X-IronPort-AV: E=Sophos;i="4.65,482,1304308800"; d="scan'208";a="120616417" Received: from 69-196-133-120.dsl.teksavvy.com (HELO pastel.home) ([69.196.133.120]) by ironport2-out.pppoe.ca with ESMTP/TLS/ADH-AES256-SHA; 05 Jul 2011 21:09:43 -0400 Received: by pastel.home (Postfix, from userid 20848) id D3244592B2; Tue, 5 Jul 2011 21:09:39 -0400 (EDT) From: Stefan Monnier To: 8998-done@debbugs.gnu.org Subject: Re: bug#8998: further analysis of the problem Message-ID: References: Date: Tue, 05 Jul 2011 21:09:39 -0400 In-Reply-To: (emacs's message of "Tue, 05 Jul 2011 13:23:12 -0700") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.1 (--) X-Debbugs-Envelope-To: 8998-done X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.1 (--) > Yes, it does the solve the problem. Thanks. Great, thanks, Stefan ------------=_1309914605-14083-3 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 5 Jul 2011 05:26:29 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Qdy9U-0003Xu-Aw for submit@debbugs.gnu.org; Tue, 05 Jul 2011 01:26:29 -0400 Received: from eggs.gnu.org ([140.186.70.92]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Qdy9Q-0003Xh-HE for submit@debbugs.gnu.org; Tue, 05 Jul 2011 01:26:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Qdy9J-0006EV-IF for submit@debbugs.gnu.org; Tue, 05 Jul 2011 01:26:19 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, T_RP_MATCHES_RCVD autolearn=unavailable version=3.3.1 Received: from lists.gnu.org ([140.186.70.17]:37782) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qdy9J-0006EP-Gh for submit@debbugs.gnu.org; Tue, 05 Jul 2011 01:26:17 -0400 Received: from eggs.gnu.org ([140.186.70.92]:45174) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qdy9H-0006cQ-TI for bug-gnu-emacs@gnu.org; Tue, 05 Jul 2011 01:26:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Qdy9F-0006Dy-OU for bug-gnu-emacs@gnu.org; Tue, 05 Jul 2011 01:26:15 -0400 Received: from mailfilter2.une.edu.au ([129.180.1.42]:33944) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qdy9E-0006CZ-SV for bug-gnu-emacs@gnu.org; Tue, 05 Jul 2011 01:26:13 -0400 X-ASG-Debug-ID: 1309843566-01568809a84ad280001-HqB3X1 Received: from postal.une.edu.au (postal.une.edu.au [129.180.1.20]) by mailfilter2.une.edu.au with ESMTP id fwQh9sUyKUseXX6H; Tue, 05 Jul 2011 15:26:06 +1000 (EST) X-Barracuda-Envelope-From: tcross@une.edu.au X-Barracuda-Apparent-Source-IP: 129.180.1.20 Received: from blind-mole.une.edu.au (blind-mole.une.edu.au [129.180.124.2]) by postal.une.edu.au (Postfix) with ESMTP id E9E2680005; Tue, 5 Jul 2011 15:26:05 +1000 (EST) From: Tim Cross To: bug-gnu-emacs@gnu.org Subject: 24.0.50; abbrev-mode infinite loop Date: Tue, 05 Jul 2011 15:26:05 +1000 X-ASG-Orig-Subj: 24.0.50; abbrev-mode infinite loop Message-ID: <871uy5b8nm.fsf@blind-mole.une.edu.au> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: postal.une.edu.au[129.180.1.20] X-Barracuda-Start-Time: 1309843566 X-Barracuda-URL: http://129.180.1.42:8000/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at une.edu.au X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=5.0 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.68012 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4-2.6 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 140.186.70.17 X-Spam-Score: -6.1 (------) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.1 (------) There appears to be an infinite loop issue with the current emacs bzr sources and abbrev-mode. When abbrev-mode is enabled, typing any word and hitting an end of word marker (i.e. space) puts emacs into an infinite loop. Hitting C-g breaks out of the loop, but you cannot enter an end of word character (i.e. something that triggers an abbrev expansion lookup) without the loop.=20 To reproduce 1. Start emacs with=20 emacs -Q 2. Turn on Enter debugger on quit 3. Turn on abbrev mode M-x abbrev-mode 4. In the scratch buffer try to enter=20 (abbrev-mode 0) When you hit '-', emacs stops responding, the mouse changes to the 'busy' icon and emacs is frozen until you hit C-g.=20 The backtrace produced is shown below. The version I've tried this with is revno 104957 A build from last Wednesday did not show this problem. backtrace is Debugger entered--Lisp error: (quit) abbrev-symbol(#("abbrev" 0 6 (fontified t)) [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0= 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...]) abbrev--before-point() #[0 "\304 \211A\262@\211A\262@\211A\262@\211A\262@\203)\305\306\307\310G= \\D\"\210\205G\204;\311\312 !\204;\313 \210=11=12=13\314=04=04$\207" [noni= nteractive last-abbrev-text last-abbrev last-abbrev-location abbrev--before= -point signal wrong-number-of-arguments nil 4 window-minibuffer-p selected-= window undo-boundary abbrev-insert] 10 "\n\n(fn)"]() apply(#[0 "\304 \211A\262@\211A\262@\211A\262@\211A\262@\203)\305\306\307= \310G\\D\"\210\205G\204;\311\312 !\204;\313 \210=11=12=13\314=04=04$\207"= [noninteractive last-abbrev-text last-abbrev last-abbrev-location abbrev--= before-point signal wrong-number-of-arguments nil 4 window-minibuffer-p sel= ected-window undo-boundary abbrev-insert] 10 "\n\n(fn)"] nil) #[771 ":\2030=02@\301=3D\203=00\300@\302=05A\"\303#\207\304@\305\306\307\= 310\311\312\300!\313\"\314\315%=06A=06##\207\304\316\"\207" [(#0) t append = nil apply apply-partially make-byte-code 642 "\300@=03#\207" vconcat vector= [] 7 "\n\n(fn FUNS GLOBAL &rest ARGS)" #[0 "\304 \211A\262@\211A\262@\211A= \262@\211A\262@\203)\305\306\307\310G\\D\"\210\205G\204;\311\312 !\204;\3= 13 \210=11=12=13\314=04=04$\207" [noninteractive last-abbrev-text last-abbr= ev last-abbrev-location abbrev--before-point signal wrong-number-of-argumen= ts nil 4 window-minibuffer-p selected-window undo-boundary abbrev-insert] 1= 0 "\n\n(fn)"]] 12 "\n\n(fn FUNS GLOBAL ARGS)"](nil nil nil) expand-abbrev() self-insert-command(1) call-interactively(self-insert-command nil nil) In GNU Emacs 24.0.50.1 (i686-pc-linux-gnu, GTK+ Version 2.24.4) of 2011-07-05 on blind-mole Windowing system distributor `The X.Org Foundation', version 11.0.11001000 configured using `configure '--prefix=3D/usr/local'' Important settings: value of $LC_ALL: nil value of $LC_COLLATE: nil value of $LC_CTYPE: nil value of $LC_MESSAGES: nil value of $LC_MONETARY: nil value of $LC_NUMERIC: nil value of $LC_TIME: nil value of $LANG: en_AU.UTF-8 value of $XMODIFIERS: nil locale-coding-system: utf-8-unix default enable-multibyte-characters: t Major mode: Org Minor modes in effect: show-paren-mode: t display-time-mode: t diff-auto-refine-mode: t shell-dirtrack-mode: t mouse-wheel-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t size-indication-mode: t transient-mark-mode: t abbrev-mode: t Recent input: M-x r e p o r t - e m a Recent messages: Loading /home/tcross/git/jabber-el/trunk/jabber-autoloads.el (source)...done Loading time...done Loading paren...done Loading w3m-fb...done Warning: show-paren mode with Emacspeak will not work. Loading emacspeak-keymap...done OVERVIEW Restoring clock data Loading /home/tcross/.emacs.d/org-clock-save.el (source)...done OVERVIEW Load-path shadows: /home/tcross/bzr/vm/trunk/lisp/tapestry hides /home/tcross/git/emacspeak/li= sp/tapestry /home/tcross/git/emacspeak/lisp/tetris hides /usr/local/share/emacs/24.0.50= /lisp/play/tetris Features: (shadow sort mail-extr emacspeak-message message format-spec rfc822 mml mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader emacsbug emacspeak-imenu imenu tabify org-table auctex-autoloads emacspeak-auctex tex-site emacspeak-info info package tabulated-list jabber-console emacspeak-sgml-mode sgml-mode ewoc jabber-util jabber-keymap saveplace org-w3m org-wl org-vm org-rmail org-mhe org-mew org-irc org-jsinfo org-infojs org-html org-exp ob-exp org-exp-blocks org-agenda org-info org-gnus org-bibtex org-bbdb w3m-fb paren time server tx-jabber jabber-autoloads tx-magit magit-svn magit diff-mode log-edit pcvs-util emacspeak-add-log add-log magit-key-mode tx-chrome edit-server edmacro emacspeak-kmacro kmacro tx-mew tx-fold txutils tx-eudc eudcb-ldap eudc emacspeak-eudc emacspeak-custom cus-edit cus-start eudc-vars ldap tx-plsql plsql-mode tx-sql emacspeak-sql sql tx-org org-clock emacspeak-org org ob-emacs-lisp ob-tangle ob-ref ob-lob ob-table org-footnote org-src ob-comint ob-keys ob ob-eval org-complete org-list org-faces org-compat org-entities org-macs emacspeak-outline foldout noutline outline easy-mmode tx-mode-compile tc-w3m w3m-load tc-timestamp tc-template emacspeak-tempo tempo tc-diary appt cal-china lunar solar cal-dst cal-bahai cal-islam cal-hebrew holidays hol-loaddefs diary-lib diary-loaddefs emacspeak-calendar cal-menu calendar cal-loaddefs tc-browse-url tx-mail vm-autoloads vm-version vm-vars bbdb-autoloads emacspeak-bbdb bbdb timezone smtpmail sendmail rfc2047 rfc2045 ietf-drums mail-utils generic-x emacspeak-generic generic dired-aux dired-x emacspeak-dired emacspeak-desktop desktop dired ls-lisp tx-emacspeak emacspeak-setup emacspeak-aumix emacspeak-forms forms-mode forms emacspeak-webspace emacspeak-webutils url url-proxy url-privacy url-expand url-methods url-history url-cookie url-util url-parse auth-source eieio assoc gnus-util password-cache url-vars mm-util mail-prsvr mailcap gweb greader browse-url g-auth gfeeds g-utils json derived emacspeak-alsaplayer emacspeak-amark emacspeak-replace emacspeak-advice shell pcomplete comint ring emacspeak-redefine emacspeak-personality byte-opt warnings bytecomp byte-compile cconv macroexp emacspeak emacspeak-widget emacspeak-view emacspeak-facemenu emacspeak-fix-interactive emacspeak-buff-menu g-cus-load cus-load regexp-opt emacspeak-sounds emacspeak-preamble emacspeak-keymap emacspeak-speak emacspeak-pronounce dtk-speak flite-voices dtk-interp voice-setup dectalk-voices espeak-voices mac-voices multispeech-voices outloud-voices dtk-unicode descr-text help-mode easymenu view dtk-css-speech acss-structure emacspeak-load-path thingatpt wid-edit advice help-fns advice-preload vc-git cl tx-paths time-date tooltip ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd tool-bar dnd fontset image fringe lisp-mode register page menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook help simple abbrev minibuffer loaddefs button faces cus-face files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote make-network-process dbusbind dynamic-setting system-font-setting font-render-setting move-toolbar gtk x-toolkit x multi-tty emacs) --=20 Tim Cross Information Technology=20 University of New England Phone: +61 2 6773 3210 Mobile: 0428 212217 Fax: +61 2 6773 3424 E-Mail: tcross@une.edu.au Web: http://www.une.edu.au/itd --- Please avoid sending me Word or PowerPoint attachments. See http://www.gnu.org/philosophy/no-word-attachments.html Any fool can make things bigger, more complex, and more violent. It takes a touch of genius (and a lot of courage) to move in the opposite direction. =E2=80=94Albert = Einstein ------------=_1309914605-14083-3--