From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Barry OReilly Newsgroups: gmane.emacs.bugs Subject: bug#16377: Undo Tree regression: (error "Unrecognized entry in undo list undo-tree-canary") Date: Tue, 21 Jan 2014 22:23:37 -0500 Message-ID: References: <20140107041442.GA12172@c3po> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/alternative; boundary=047d7b5d5fba8f3cd904f086a6d9 X-Trace: ger.gmane.org 1390361042 8517 80.91.229.3 (22 Jan 2014 03:24:02 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 22 Jan 2014 03:24:02 +0000 (UTC) Cc: 16377@debbugs.gnu.org To: Toby Cubitt Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Jan 22 04:24:08 2014 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1W5oQC-00073s-Ep for geb-bug-gnu-emacs@m.gmane.org; Wed, 22 Jan 2014 04:24:08 +0100 Original-Received: from localhost ([::1]:33412 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W5oQC-0005V4-2C for geb-bug-gnu-emacs@m.gmane.org; Tue, 21 Jan 2014 22:24:08 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:45810) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W5oQ8-0005Un-5C for bug-gnu-emacs@gnu.org; Tue, 21 Jan 2014 22:24:05 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1W5oQ7-0006TD-0W for bug-gnu-emacs@gnu.org; Tue, 21 Jan 2014 22:24:04 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:46065) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W5oQ6-0006T7-SV for bug-gnu-emacs@gnu.org; Tue, 21 Jan 2014 22:24:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1W5oQ6-0001tS-EW for bug-gnu-emacs@gnu.org; Tue, 21 Jan 2014 22:24:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Barry OReilly Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 22 Jan 2014 03:24:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 16377 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-Cc: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.13903610257251 (code B ref -1); Wed, 22 Jan 2014 03:24:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 22 Jan 2014 03:23:45 +0000 Original-Received: from localhost ([127.0.0.1]:60084 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1W5oPo-0001sq-Mx for submit@debbugs.gnu.org; Tue, 21 Jan 2014 22:23:45 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:44052) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1W5oPl-0001se-BY for submit@debbugs.gnu.org; Tue, 21 Jan 2014 22:23:42 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1W5oPk-0006RS-5Y for submit@debbugs.gnu.org; Tue, 21 Jan 2014 22:23:41 -0500 Original-Received: from lists.gnu.org ([2001:4830:134:3::11]:50700) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W5oPk-0006RO-2a for submit@debbugs.gnu.org; Tue, 21 Jan 2014 22:23:40 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:45774) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W5oPj-0005Tn-57 for bug-gnu-emacs@gnu.org; Tue, 21 Jan 2014 22:23:40 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1W5oPi-0006R5-AY for bug-gnu-emacs@gnu.org; Tue, 21 Jan 2014 22:23:39 -0500 Original-Received: from mail-oa0-x231.google.com ([2607:f8b0:4003:c02::231]:39287) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W5oPi-0006R1-4s for bug-gnu-emacs@gnu.org; Tue, 21 Jan 2014 22:23:38 -0500 Original-Received: by mail-oa0-f49.google.com with SMTP id i7so7944931oag.36 for ; Tue, 21 Jan 2014 19:23:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=iFYTS+ObGEQnv29UBZ6W5N+5A5NOylwCimUz5RmZEmw=; b=L9iLCccgAopX/mdA4eF5MGUkgcjF5DlQjmO9KQbps3H7uw/y+egxTDAfcqxE2oUEH8 qeSJq18qTcKeCaR6gTFjwint8lG2qZecYh4rQE69YNo5uqh7JzNcQ/SbKK7slorLFHrs OvE0ad/YSOCwbOTnxi2E9d9tnA9CXf3t+cL0BDEwNmUDlw9aDg0QIrYoV4j9SO78Jx93 hCSrMt1qzT6IUwKVe6eF0StybAjnKXwAJdtTPN857BXgXxVdNThVV+DvJI3/pyyrzqAh eNrYo1Tm7WowawVq0/WvxVffocGmieZ1e1dq9qYtLJJDk31NGnu0jodXBiOkRWTwDc50 wtBA== X-Received: by 10.60.124.138 with SMTP id mi10mr4966025oeb.57.1390361017529; Tue, 21 Jan 2014 19:23:37 -0800 (PST) Original-Received: by 10.76.21.84 with HTTP; Tue, 21 Jan 2014 19:23:37 -0800 (PST) In-Reply-To: <20140107041442.GA12172@c3po> X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:83868 Archived-At: --047d7b5d5fba8f3cd904f086a6d9 Content-Type: text/plain; charset=ISO-8859-1 > * Sometimes the navigate down hangs with backtrace: > > Debugger entered--Lisp error: (quit) > undo-tree-copy-list((nil)) > undo-tree-redo-1(1) > undo-tree-visualize-redo(1) > call-interactively(undo-tree-visualize-redo nil nil) > command-execute(undo-tree-visualize-redo) In a reproduction of this, at the start of undo-tree-copy-list, undo-list is: (nil (undo-tree-id3 . -2)) Then in this while loop: (while (null copy) (setq copy (undo-tree-restore-GC-elts-from-pool (pop undo-list)))) undo-tree-restore-GC-elts-from-pool returns nil for both elements, so the while loop never ends. Perhaps you want instead (ignore-whitespace diff): --- a/emacs/lisp/undo-tree.el Fri Jan 17 19:18:15 2014 -0500 +++ b/emacs/lisp/undo-tree.el Tue Jan 21 22:17:50 2014 -0500 @@ -1690,13 +1690,13 @@ (defun undo-tree-copy-list (undo-list) ;; Return a deep copy of first changeset in `undo-list'. Object id's are ;; replaced by corresponding objects from `buffer-undo-tree' object-pool. - (when undo-list (let (copy p) ;; if first element contains an object id, replace it with object from ;; pool, discarding element entirely if it's been GC'd - (while (null copy) + (while (and undo-list (null copy)) (setq copy (undo-tree-restore-GC-elts-from-pool (pop undo-list)))) + (when copy (setq copy (list copy) p copy) ;; copy remaining elements, replacing object id's with objects from --047d7b5d5fba8f3cd904f086a6d9 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
> * Sometimes the navigate down hangs with backtrace:>
>=A0=A0 Debugger entered--Lisp error: (quit)
>=A0=A0=A0= =A0=A0 undo-tree-copy-list((nil))
>=A0=A0=A0=A0=A0 undo-tree-redo-1(1= )
>=A0=A0=A0=A0=A0 undo-tree-visualize-redo(1)
>=A0=A0=A0=A0=A0 call-interactively(undo-tree-visualize-redo nil nil)>=A0=A0=A0=A0=A0 command-execute(undo-tree-visualize-redo)

In a = reproduction of this, at the start of undo-tree-copy-list,
undo-list is:=

=A0 (nil (undo-tree-id3 . -2))

Then in this while loop:

=A0 (while (null copy)
=A0=A0=A0 (se= tq copy
=A0=A0=A0=A0=A0=A0=A0=A0=A0 (undo-tree-restore-GC-elts-from-pool= (pop undo-list))))

undo-tree-restore-GC-elts-from-pool returns nil = for both elements, so
the while loop never ends. Perhaps you want instead (ignore-whitespace
d= iff):

--- a/emacs/lisp/undo-tree.el=A0=A0=A0 Fri Jan 17 19:18:15 201= 4 -0500
+++ b/emacs/lisp/undo-tree.el=A0=A0=A0 Tue Jan 21 22:17:50 2014 = -0500
@@ -1690,13 +1690,13 @@
=A0(defun undo-tree-copy-list (undo-list)
=A0= =A0 ;; Return a deep copy of first changeset in `undo-list'. Object id&= #39;s are
=A0=A0 ;; replaced by corresponding objects from `buffer-undo-= tree' object-pool.
-=A0 (when undo-list
=A0=A0=A0=A0 (let (copy p)
=A0=A0=A0=A0=A0=A0 ;;= if first element contains an object id, replace it with object from
=A0= =A0=A0=A0=A0=A0 ;; pool, discarding element entirely if it's been GC= 9;d
-=A0=A0=A0=A0=A0 (while (null copy)
+=A0=A0=A0 (while (and undo-list (null copy))
=A0=A0=A0=A0 (setq copy=A0=A0=A0=A0 =A0=A0=A0=A0=A0 (undo-tree-restore-GC-elts-from-pool (pop und= o-list))))
+=A0=A0=A0 (when copy
=A0=A0=A0=A0=A0=A0 (setq copy (list = copy)
=A0=A0=A0=A0 =A0=A0=A0 p copy)
=A0=A0=A0=A0=A0=A0 ;; copy remai= ning elements, replacing object id's with objects from


--047d7b5d5fba8f3cd904f086a6d9--