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

From: Michał Kondraciuk <[email-masked]>
Date: Sun, 25 Mar 2018 11:46:16 +0200

On 03/25/2018 04:33 AM, Eli Zaretskii wrote:
>> From: Michał Kondraciuk<[email-masked]>
>> Date: Sat, 24 Mar 2018 21:30:56 +0100
>>
>> Newest Emacs (and 25.3) crashes for me. Unfortunately I can only
>> reproduce this using newest versions of Ivy and yasnippet packages.
> Please post a reproduction recipe starting with "emacs -Q" and loading
> the necessary packages.
>
> Thanks.

1. emacs -Q
2. M-x package-initialize
3. Evaluate: |(add-to-list 'package-archives '("melpa" . 
"https://melpa.org/packages/")) 4. M-x package-refresh-contents 5. M-x 
package-install RET ivy RET |6||. M-x package-install RET yasnippet RET 
|||7. M-x package-install RET yasnippet-snippets RET|
8. Evaluate form below.
9. Wait 1-10 minutes.

(progn
   (package-initialize)
   (require 'yasnippet)
   (require 'ivy)

   (yas-reload-all)

   (switch-to-buffer "*scratch*")
   (lisp-interaction-mode)
   (yas-minor-mode-on)

   (let ((templates (mapcar #'yas--template-key
                            (yas--all-templates 
(yas--get-snippet-tables)))))
     (defun update-fn ()
       (with-current-buffer "*scratch*"
         (save-restriction
           (narrow-to-region 3 3)
           (insert " " (ivy-state-current ivy-last))
           (yas-expand)
           (mapc #'yas-abort-snippet (yas-active-snippets)))
         (redisplay)))
     (let ((buffer-undo-list t))
       (while t
         (erase-buffer)
         (insert "aaaaaa")
         (redisplay)
         (sit-for 0.1)
         (run-with-timer
          0.01 nil (lambda ()
                     (dotimes (_ (% (random) 15))
                       (execute-kbd-macro "\C-n")
                       (sit-for 0.05)
                       (redisplay)
                       (when (zerop (% (random) 4))
                         (execute-kbd-macro "\C-p")
                         (sit-for 0.05)
                         (redisplay)))
                     (sit-for 0.1)
                     (redisplay)
                     (abort-recursive-edit)))
         (catch 'exit
           (condition-case err
               (ivy-read "foo: " templates
                         :update-fn #'update-fn)
             (quit)))))))
||||