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.
next prev parent 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).