unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Florian Weimer <fweimer@redhat.com>
Cc: carlos@redhat.com, 43389@debbugs.gnu.org, dj@redhat.com
Subject: bug#43389: 28.0.50; Emacs memory leaks
Date: Tue, 17 Nov 2020 17:45:15 +0200	[thread overview]
Message-ID: <83r1osq96c.fsf@gnu.org> (raw)
In-Reply-To: <87wnylm3sw.fsf@oldenburg2.str.redhat.com> (message from Florian Weimer on Mon, 16 Nov 2020 21:42:39 +0100)

> From: Florian Weimer <fweimer@redhat.com>
> Cc: carlos@redhat.com,  dj@redhat.com,  43389@debbugs.gnu.org
> Date: Mon, 16 Nov 2020 21:42:39 +0100
> 
> * Eli Zaretskii:
> 
> > For some time (several months, I think) we have reports from Emacs
> > users that the memory footprints of their Emacs sessions sometimes
> > start growing very quickly, from several hundreds of MBytes to several
> > gigabytes in a day or even just few hours, and in some cases causing
> > the OOMK to kick in and kill the Emacs process.
> 
> The last time I saw this was a genuine memory leak in the Emacs C code.

That's always a possibility.  However, 2 aspects of these bug reports
seem to hint that there's more here than meets the eye:

 . the problem happens only to a small number of people, and it is
   hard to find an area in Emacs that would use memory in some special
   enough way to happen rarely

 . the Emacs sessions of the people who reported this would run for
   many days and even weeks on end with fairly normal memory footprint
   (around 500MB) that was very stable, and then suddenly begin
   growing by the minute to 10 or 20 times that

> There is an issue with reusing posix_memalign allocations.  On my system
> (running Emacs 27.1 as supplied by Fedora 32), I only see such
> allocations as the backing storage for the glib (sic) slab allocator.

(By "backing storage" you mean malloc calls that request large chunks
so that malloc obtains the memory from mmap?  Or do you mean something
else?)

Are the problems with posix_memalign also relevant to calls to
aligned_alloc?  Emacs calls the latter _a_lot_, see lisp_align_malloc.

> It gets exercised mostly when creating UI elements, as far as I can
> tell.

I guess your build uses GTK as the toolkit?

> There is actually a glibc patch floating around that fixes the aligned
> allocation problem, at some (hopefully limited) performance cost to
> aligned allocations.  We want to get it reviewed and integrated into
> upstream glibc.  If there is a working reproducer, we could run it
> against a patched glibc.

We don't have a reproducer, but several people said that the problem
happens to them regularly enough in their normal usage.  So I think we
can ask them to try a patches glibc and see if the problem goes away.

> The other issue we have is that thread counts has exceeded in recent
> times more than system memory, and glibc basically scales RSS overhead
> with thread count, not memory.  A use of libgomp suggests that many
> threads might indeed be spawned.  If their lifetimes overlap, it would
> not be unheard of to end up with some RSS overhead in the order of
> peak-usage-per-thread times 8 times the number of hardware threads
> supported by the system.  Setting MALLOC_ARENA_MAX to a small value
> counteracts that, so it's very simple to experiment with it if you have
> a working reproducer.

"Small value" being something like 2?

Emacs doesn't use libgomp, I think that comes from ImageMagick, and
most people who reported these problems use Emacs that wasn't built
with ImageMagick.  The only other source of threads in Emacs I know of
is GTK, but AFAIK it starts a small number of them, like 4.

In any case, experimenting with MALLOC_ARENA_MAX is easy, so I think
we should ask the people who experience this to try that.

Any other suggestions or thoughts?

Thanks.





  reply	other threads:[~2020-11-17 15:45 UTC|newest]

Thread overview: 110+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-14  0:43 bug#43389: 28.0.50; Emacs memory leaks Michael Heerdegen
2020-09-14 19:09 ` Juri Linkov
2020-09-15  0:32   ` Michael Heerdegen
2020-09-15 17:54     ` Russell Adams
2020-09-15 18:52       ` Eli Zaretskii
2020-09-15 21:12         ` Russell Adams
2020-09-16 14:52           ` Eli Zaretskii
2020-09-17 20:47             ` Russell Adams
2020-09-17 21:58               ` Joshua Branson via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-17 23:09                 ` Russell Adams
2020-09-18  6:56                 ` Eli Zaretskii
2020-09-18  7:53                   ` Robert Pluim
2020-09-18  8:13                     ` Eli Zaretskii
2020-09-20 20:08                     ` jbranso--- via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-09-18  8:22               ` Eli Zaretskii
2020-11-09 20:46                 ` Michael Heerdegen
2020-11-09 21:24                   ` Michael Heerdegen
2020-11-09 21:51                     ` Michael Heerdegen
2020-11-10  3:36                       ` Eli Zaretskii
2020-11-10  8:22                         ` Andreas Schwab
2020-11-10 12:59                           ` Michael Heerdegen
2020-11-10 13:01                             ` Andreas Schwab
2020-11-10 13:10                               ` Michael Heerdegen
2020-11-10 13:20                                 ` Eli Zaretskii
2020-11-10 13:26                                   ` Michael Heerdegen
2020-11-10 14:25                                     ` Michael Heerdegen
2020-11-10 15:36                                       ` Eli Zaretskii
2020-11-10 17:44                                         ` Eli Zaretskii
2020-11-10 18:55                                           ` Michael Heerdegen
2020-11-10 15:34                                     ` Eli Zaretskii
2020-11-10 16:49                                       ` Michael Heerdegen
2020-11-10 17:13                                         ` Eli Zaretskii
2020-12-08  1:07                                         ` Michael Heerdegen
2020-12-08  3:24                                           ` Jose A. Ortega Ruiz
2020-12-08 12:37                                             ` Russell Adams
2020-12-08  5:13                                           ` Jean Louis
2020-12-08 16:29                                             ` Michael Heerdegen
2020-12-10  0:50                                               ` Michael Heerdegen
2020-12-10  5:43                                                 ` Jean Louis
2020-11-10 15:53                           ` Eli Zaretskii
2020-11-10 10:25                         ` Michael Heerdegen
2020-11-10 15:55                           ` Eli Zaretskii
2020-11-10 16:41                             ` Michael Heerdegen
2020-11-09 22:33                   ` Jean Louis
2020-11-10 15:47                     ` Eli Zaretskii
2020-11-10 16:36                       ` Michael Heerdegen
2020-11-10 19:51                       ` Jean Louis
2020-11-10  3:30                   ` Eli Zaretskii
2020-11-26 15:42               ` Russell Adams
2020-11-26 16:34                 ` Eli Zaretskii
2020-11-26 16:54                   ` Russell Adams
2020-11-26 19:20                     ` Eli Zaretskii
2020-11-27 10:45                       ` Russell Adams
2020-11-27 12:38                         ` Eli Zaretskii
2020-11-28 19:56                           ` Russell Adams
2020-11-28 20:13                             ` Eli Zaretskii
2020-11-28 21:52                               ` Basil L. Contovounesios
2020-11-29  3:29                                 ` Eli Zaretskii
2020-09-17 20:59 ` Thomas Ingram
2020-10-29 20:17 ` Trevor Bentley
2020-10-30  8:00   ` Eli Zaretskii
2020-11-11 21:15     ` Trevor Bentley
2020-11-12 14:24       ` Eli Zaretskii
2020-11-16 20:16         ` Eli Zaretskii
2020-11-16 20:42           ` Florian Weimer
2020-11-17 15:45             ` Eli Zaretskii [this message]
2020-11-17 16:32               ` Carlos O'Donell
2020-11-17 17:13                 ` Eli Zaretskii
2020-11-17 17:20                   ` DJ Delorie
2020-11-17 19:52                     ` Eli Zaretskii
2020-11-17 19:59                       ` DJ Delorie
2020-11-17 20:13                         ` Florian Weimer
2020-11-17 20:16                           ` DJ Delorie
2020-11-17 20:27                             ` Eli Zaretskii
2020-11-17 20:35                               ` Florian Weimer
2020-11-17 20:43                                 ` Eli Zaretskii
2020-11-17 20:58                                   ` Florian Weimer
2020-11-17 21:10                                     ` Eli Zaretskii
2020-11-18  5:43                                       ` Carlos O'Donell
2020-11-18  6:09                                         ` Jean Louis
2020-11-18  8:32                                           ` Andreas Schwab
2020-11-18  9:01                                             ` Jean Louis
2020-11-18 16:19                                               ` Russell Adams
2020-11-18 17:30                                                 ` Eli Zaretskii
2020-11-19 15:57                                             ` Carlos O'Donell
2020-11-18 18:01                                         ` Eli Zaretskii
2020-11-18 18:27                                           ` DJ Delorie
2020-11-19 16:08                                             ` Carlos O'Donell
2020-11-22 20:19                                               ` Deus Max
2020-11-23  3:26                                                 ` Eli Zaretskii
2020-11-23 16:45                                                   ` Deus Max
2020-11-23 17:07                                                     ` Eli Zaretskii
2020-11-17 16:33               ` Florian Weimer
2020-11-17 17:08                 ` Eli Zaretskii
2020-11-17 17:24                   ` Florian Weimer
2020-11-17 20:39                   ` Jean Louis
2020-11-17 20:57                     ` DJ Delorie
2020-11-17 21:45                       ` Jean Louis
2020-11-18 15:03                         ` Eli Zaretskii
2020-11-23 18:55                           ` Jean Louis
     [not found]         ` <87wnyju40z.fsf@mail.trevorbentley.com>
2020-11-17 20:36           ` Eli Zaretskii
2020-11-18 21:47 ` Jose A. Ortega Ruiz
2020-11-19 14:03   ` Eli Zaretskii
2020-11-19 14:34     ` Jean Louis
2020-11-19 16:03       ` Carlos O'Donell
2020-11-19 17:25     ` jao
2020-12-09 19:41 ` Jose A. Ortega Ruiz
2020-12-09 20:25   ` Lars Ingebrigtsen
2020-12-09 21:04     ` Jose A. Ortega Ruiz
2020-12-11 13:55       ` Lars Ingebrigtsen

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

  List information: https://www.gnu.org/software/emacs/

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

  git send-email \
    --in-reply-to=83r1osq96c.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=43389@debbugs.gnu.org \
    --cc=carlos@redhat.com \
    --cc=dj@redhat.com \
    --cc=fweimer@redhat.com \
    /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 public inbox

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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).