GNU bug report logs - #73041
30.0.90; track-changes-mode logs warnings (#70541 regression? not actually fixed?)

Previous Next

Package: emacs;

Reported by: epg <at> pretzelnet.org

Date: Thu, 5 Sep 2024 13:49:02 UTC

Severity: normal

Merged with 75906

Found in versions 30.0.90, 30.0.93

Done: Stefan Monnier <monnier <at> iro.umontreal.ca>

Bug is archived. No further changes may be made.

Full log


Message #49 received at control <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Xiyue Deng <manphiz <at> gmail.com>
Cc: 75906 <at> debbugs.gnu.org, Morgan Willcock <morgan <at> ice9.digital>
Subject: Re: bug#75906: 30.0.93; track-changes-tests--random failure
Date: Sun, 02 Feb 2025 18:13:47 -0500
forcemerge 75906 73041
thanks

Hi,

It looks like those two bugs are one and the same.

> > Hmm... that's weird.  I tried:
> >
> >     src/emacs --batch -Q                                              \
> >               --eval '(setq track-changes-tests--random-seed 814217)' \
> >               -l test/lisp/emacs-lisp/track-changes-tests.elc         \
> >               --eval '(ert-run-tests-batch-and-exit t)'

Duh!  It was just a pilot error on my end: the seed needs to be
a string.  After fixing the above to use

    (setq track-changes-tests--random-seed "814217")

I was able to reproduce the problem locally.

> It looks like this test may be flaky.

It's randomized (which is why it prints the seed it used, so you can
try and reproduce it reliably once it hits a problem).

> | Test track-changes-tests--random backtrace:
> |   cl--assertion-failed((not (memq id track-changes--clean-trackers)))
> |   track-changes-fetch(#s(track-changes--tracker :signal #f(compiled-fu

After finding the origin of the problem, I think that the better fix is
to adjust the assertion.  The better short term fix for `emacs-30` is to
simply comment out this assertion.

Any objection to pushing the patch below to `emacs-30`?


        Stefan


diff --git a/lisp/emacs-lisp/track-changes.el b/lisp/emacs-lisp/track-changes.el
index 3f3b8d7bed9..1aac53b5f33 100644
--- a/lisp/emacs-lisp/track-changes.el
+++ b/lisp/emacs-lisp/track-changes.el
@@ -364,7 +364,9 @@ track-changes-fetch
                              track-changes--state))
               ;; Nothing to do.
               nil)
-          (cl-assert (not (memq id track-changes--clean-trackers)))
+          ;; ID may still be in `track-changes--clean-trackers' if
+          ;; `after-change-functions' was skipped.
+          ;;(cl-assert (not (memq id track-changes--clean-trackers)))
           (cl-assert (<= (point-min) beg end (point-max)))
           ;; Update the tracker's state *before* running `func' so we don't risk
           ;; mistakenly replaying the changes in case `func' exits non-locally.





This bug report was last modified 105 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.