all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Toby Cubitt <tsc25@cantab.net>
Cc: 24640@debbugs.gnu.org, phillip.lord@russet.org.uk, rrt@sc3d.org
Subject: bug#24640: Crashes in 25.1
Date: Wed, 12 Oct 2016 17:44:55 +0300	[thread overview]
Message-ID: <83vawxaaoo.fsf@gnu.org> (raw)
In-Reply-To: <20161012135020.GA21177@marvin.cs.ucl.ac.uk> (message from Toby Cubitt on Wed, 12 Oct 2016 14:50:20 +0100)

> Date: Wed, 12 Oct 2016 14:50:20 +0100
> Cc: phillip.lord@russet.org.uk, rrt@sc3d.org, 24640@debbugs.gnu.org
> From: Toby Cubitt <tsc25@cantab.net>
> 
> On Wed, Oct 12, 2016 at 01:31:05PM +0300, Eli Zaretskii wrote:
> > > Date: Tue, 11 Oct 2016 19:33:20 +0300
> > > From: Eli Zaretskii <eliz@gnu.org>
> > > Cc: 24640@debbugs.gnu.org
> > > 
> > > > ​Yes, the crashes appear to stop when I comment out (global-undo-tree-mode) in vars.el.
> 
> You can also disable history loading without disabling
> global-undo-tree-mode, by disabling undo-tree-auto-save-history. Might be
> worth doing this more fine-grained check to confirm.

Thanks for chiming in.

> > > Phillip, could you please look into that package and see if you can
> > > spot any potential problems with the Emacs 25 undo internals?  TIA.
> 
> >From the bug tracker discussion, it sounds like you're close to boiling
> this down to some simple steps involving one undo-tree history file that
> trigger the crash.

They are only simple on Reuben's machine, as they involve a very large
setup of his Emacs sessions.  We don't have a reproducer for any other
machine.

What's more, the steps to reproduce may be simple (start Emacs and
wait for it to crash), finding the code that is the culprit for this
is anything but easy.  The crash is triggered by GC, and is due to an
invalid object being present in the value of read_objects, which holds
the object read by Emacs with the #n=object form.  The problem is that
the faulty object is deep in that list, so catching the code that puts
it there is not easy.  I'm still trying to devise a way for that, with
no real success so far.

> If you can send me the file and a list of steps to reproduce from
> emacs -Q, I'd be happy to look into the undo-tree side of things.

Thanks.  Maybe Reuben will be able to do that.

> > Some functions in undo-tree refer to or manipulate Emacs undo
> > internals:
> > 
> >   undo-list-pop-changeset
> >   undo-list-transfer-to-tree
> >   undo-list-rebuild-from-tree
> >   undo-tree-pull-undo-in-region-branch
> >   undo-tree-pull-redo-in-region-branch
> >   undo-tree-adjust-elements-to-elt
> >   undo-tree-apply-deltas
> >   undo-tree-undo-1
> >   undo-tree-redo-1
> > 
> > Do they perhaps need some adjustments to Emacs 25's undo?
> 
> The only Emacs undo internal that undo-tree manipulates is the
> buffer-undo-list variable. The only functions that do so are:
> 
>   undo-list-pop-changeset
>   undo-list-transfer-to-tree
>   undo-list-rebuild-from-tree
> 
> All the others either call one of these, or only touch buffer-undo-tree
> which is a variable defined in the undo-tree package and which the Emacs
> undo internals know nothing about.
> 
> Has the format of buffer-undo-list has changed at all? If so, then the
> three above might need adjustment. If not, they should work as before.
> 
> The only other Emacs undo internals used by undo-tree are to call
> primitive-undo and undo-boundary when undo/redoing.

I counted this last class among those listed above.

> > Another potential issue is the new undo timer we have in Emacs 25 (see
> > undo-auto--boundary-ensure-timer in simple.el).  One way of checking
> > whether this is related to the crashes is to modify that function to
> > use a much larger value for the 1st argument of run-at-time, say
> > 10000, so that the undo timer never fires during the startup.  Reuben,
> > could you try that?
> 
> As far as I understand, the timer just adds undo boundaries to
> buffer-undo-list in some of the open buffers. Undo-tree doesn't touch
> buffer-undo-list (or do anything at all, in fact) until you call one of
> its interactive commands.

Does restoring undo-tree history manipulates buffer-undo-list of any
buffers in any way?

> Since the timer can't run whilst undo-tree lisp code is running

It can run if during restoring the history, undo-tree calls sit-for,
or asks a question, or calls some other API that enters redisplay
and/or involves user input.

> I'd be surprised if the new undo timer is the culprit.

It could be a culprit, but evidently isn't, as Reuben already tried to
disable it.

Thanks.





  reply	other threads:[~2016-10-12 14:44 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-07 23:12 bug#24640: Crashes in 25.1 Reuben Thomas
2016-10-08  5:53 ` Eli Zaretskii
2016-10-08 13:28   ` Reuben Thomas
2016-10-08 13:30   ` Reuben Thomas
2016-10-08 14:30     ` Eli Zaretskii
2016-10-08 15:26       ` Reuben Thomas
2016-10-08 15:34         ` Eli Zaretskii
2016-10-08 22:08           ` Reuben Thomas
2016-10-09  7:05             ` Eli Zaretskii
2016-10-09  7:45               ` Reuben Thomas
2016-10-09  9:57                 ` Eli Zaretskii
2016-10-09 20:21                   ` Reuben Thomas
2016-10-10  6:15                     ` Eli Zaretskii
2016-10-10 16:12                       ` Reuben Thomas
2016-10-10 16:33                         ` Eli Zaretskii
2016-10-10 17:01                           ` Reuben Thomas
2016-10-10 17:05                             ` Eli Zaretskii
2016-10-10 17:06                               ` Reuben Thomas
     [not found]                           ` <CAOnWdoheXTvdasXN8vQFZPyayZVHD-QweqJupVrS8BQFxj2iGw@mail.gmail.com>
     [not found]                             ` <831szodsus.fsf@gnu.org>
     [not found]                               ` <CAOnWdojJHhajbRcinnubLfwWhY=snydnPM7Cws9ktX+pJe8aGA@mail.gmail.com>
     [not found]                                 ` <83zimccbzr.fsf@gnu.org>
     [not found]                                   ` <CAOnWdojzYsTR=wyrn-k2dJbStej89neskr=vwZQQWrQVCGtpkA@mail.gmail.com>
2016-10-11 11:59                                     ` Eli Zaretskii
2016-10-11 14:08                                       ` Reuben Thomas
2016-10-11 14:53                                         ` Eli Zaretskii
2016-10-11 15:19                                           ` Eli Zaretskii
2016-10-11 15:42                                             ` Reuben Thomas
2016-10-11 16:26                                               ` Eli Zaretskii
2016-10-11 15:41                                           ` Reuben Thomas
2016-10-11 16:33                                             ` Eli Zaretskii
2016-10-11 16:41                                               ` Reuben Thomas
2016-10-12 10:31                                               ` Eli Zaretskii
2016-10-12 10:57                                                 ` Reuben Thomas
2016-10-12 11:14                                                   ` Eli Zaretskii
2016-10-12 13:50                                                 ` Toby Cubitt
2016-10-12 14:44                                                   ` Eli Zaretskii [this message]
2016-10-12 16:56                                                     ` Toby Cubitt
2016-10-12 17:28                                                       ` Eli Zaretskii
2016-10-12 18:07                                                         ` Toby Cubitt
2016-10-12 19:15                                                           ` Eli Zaretskii
2016-10-12 20:45                                                             ` Reuben Thomas
2016-10-14 20:06                                                               ` Eli Zaretskii

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=83vawxaaoo.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=24640@debbugs.gnu.org \
    --cc=phillip.lord@russet.org.uk \
    --cc=rrt@sc3d.org \
    --cc=tsc25@cantab.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.