Subject: bug#30931: 27.0.50; Crash in "Automatic GC"

From: Noam Postavsky <[email-masked]>
Date: Thu, 29 Mar 2018 19:47:13 -0400

Michał Kondraciuk <[email-masked]> writes:

> I don't know if it helps, but I was able to reproduce a crash in the
> same place (mark_object()) with bare Emacs, however only in 27.0.50.

This is very helpful, thank you.

> I have no idea what this code does at all. The way I wrote this is I
> kept rerunning the previous recipe but each time I commented out some
> part of yasnippet.el library. If Emacs crashed, I kept the change,
> otherwise I uncommented those parts and focused on another region, and
> so on until I was left with very simple functions.

I was going to do the same thing, just no time to get to it this week.

> I hope someone can confirm that it crashes.

I can confirm it crashes, and much faster too, just two calls of the
crash function are enough:

(progn
  (defun on-overlay-modification (&rest args)
    (push nil buffer-undo-list))

  (defun crash ()
    (save-restriction
      (narrow-to-region 1 1)

      (let (end)
        (insert " 123aaa")
        (narrow-to-region 2 3)

        (setq end (set-marker (make-marker) 3))
        (save-restriction
          (widen)
          (lisp-indent-line))

        (garbage-collect)

        (overlay-put (make-overlay end (1+ end))
                     'modification-hooks '(on-overlay-modification)))))

  (with-current-buffer "*scratch*"
    (erase-buffer)
    (let ((buffer-undo-list t))
      (crash)
      (erase-buffer)
      (crash))))