Subject: bug#26952: 25.1; loops eating all memory while yanking big rectangle

From: [email-masked]
Date: Sat, 20 May 2017 13:41:36 -0400

Eli Zaretskii <[email-masked]> writes:

>> I see the issue also with 25.2, but not with master (no idea what might
>> have fixed it though).
>
> Thanks for looking into this.  Can you tell more about where it is
> looping in Emacs 25.2?  I'm uneasy about not knowing what fixed this.

The following simple loop can trigger the issue (I'm now also limiting
Emacs' memory usage to 1GB with "ulimit -Sv $((1000 * 1024))" so that it
just throws an out of memory error instead of filling my swap and
slowing everything down):

  (let ((str (make-string 150 ?a)))
    (dotimes (_ (* 600 1000))
      (insert str ?\n)))

I think it might be just an inefficient allocater (or this pattern of
allocation happens to hit a pathological case for the allocater).  The
master branch is using the 'hybrid' allocater, while emacs-25 is not.
If I configure 25.2 with REL_ALLOC=yes, then it runs okay.  The only
allocation seems to be from 'enlarge_buffer_text'.