all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* Memory leaks
@ 2009-08-05 17:17 Daniel Clemente
  2009-08-08 18:57 ` Chong Yidong
  0 siblings, 1 reply; 44+ messages in thread
From: Daniel Clemente @ 2009-08-05 17:17 UTC (permalink / raw)
  To: emacs-devel


  Hi, today my Emacs --daemon from CVS started eating memory and ended up with 1 Gb resident and 2'5 Gb virtual, with only 180 small buffers open.

  I wanted to debug who was taking all this memory. Since I don't know how to find out this, I have started to collect more information in EmacsWiki: http://www.emacswiki.org/emacs/EmacsMemoryDebugging

  How do you debug memory leaks? Please add tips there so that they are useful to more people.

  Thanks

-- Daniel






^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: Memory leaks
  2009-08-05 17:17 Memory leaks Daniel Clemente
@ 2009-08-08 18:57 ` Chong Yidong
  2009-08-10  8:08   ` Daniel Clemente
  0 siblings, 1 reply; 44+ messages in thread
From: Chong Yidong @ 2009-08-08 18:57 UTC (permalink / raw)
  To: Daniel Clemente; +Cc: emacs-devel

Daniel Clemente <dcl441-bugs@yahoo.com> writes:

>   Hi, today my Emacs --daemon from CVS started eating memory and ended
>   up with 1 Gb resident and 2'5 Gb virtual, with only 180 small
>   buffers open.
>
>   I wanted to debug who was taking all this memory. Since I don't know
>   how to find out this, I have started to collect more information in
>   EmacsWiki: http://www.emacswiki.org/emacs/EmacsMemoryDebugging
>
>   How do you debug memory leaks? Please add tips there so that they
>   are useful to more people.

How quickly does this leak happen?  If you can make it leak quickly and
reproducibly, the easiest approach is probably to bisect.




^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: Memory leaks
  2009-08-08 18:57 ` Chong Yidong
@ 2009-08-10  8:08   ` Daniel Clemente
  0 siblings, 0 replies; 44+ messages in thread
From: Daniel Clemente @ 2009-08-10  8:08 UTC (permalink / raw)
  To: emacs-devel

El ds, ago 08 2009 a les 20:57, Chong Yidong va escriure:
>>   Hi, today my Emacs --daemon from CVS started eating memory and ended
>> …
>
> How quickly does this leak happen?  If you can make it leak quickly and
> reproducibly, the easiest approach is probably to bisect.

  This was caused by an Emacs which didn't do garbage collection and warned: „Building Emacs overflowed pure space“, due to a recent change already fixed. The full story is now explained at http://www.emacswiki.org/emacs/EmacsMemoryDebugging#toc9

  I also added your tip about bisecting.






^ permalink raw reply	[flat|nested] 44+ messages in thread

* Memory leaks
@ 2011-03-03 17:13 Uday S Reddy
  2011-03-03 17:55 ` Andreas Schwab
  0 siblings, 1 reply; 44+ messages in thread
From: Uday S Reddy @ 2011-03-03 17:13 UTC (permalink / raw)
  To: emacs-devel

I am trying to track down some possible memory leaks in VM.  I have been 
assuming that, when a buffer gets killed,

- all its string memory is reclaimed,

- all the buffer-local variables are reclaimed, and

- all the overlays and intervals are reclaimed.

Are any of these assumptions invalid?  If so, what can I do about the 
lost memory?

Cheers,
Uday




^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: Memory leaks
  2011-03-03 17:13 Memory leaks Uday S Reddy
@ 2011-03-03 17:55 ` Andreas Schwab
  2011-03-03 18:00   ` Uday S Reddy
  0 siblings, 1 reply; 44+ messages in thread
From: Andreas Schwab @ 2011-03-03 17:55 UTC (permalink / raw)
  To: Uday S Reddy; +Cc: emacs-devel

Uday S Reddy <u.s.reddy@cs.bham.ac.uk> writes:

> I am trying to track down some possible memory leaks in VM.  I have been
> assuming that, when a buffer gets killed,
>
> - all its string memory is reclaimed,
>
> - all the buffer-local variables are reclaimed, and
>
> - all the overlays and intervals are reclaimed.
>
> Are any of these assumptions invalid?  If so, what can I do about the lost
> memory?

In general no memory is reclaimed until the next garbage collection (but
the buffer text is freed immediately).

Andreas.

-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: Memory leaks
  2011-03-03 17:55 ` Andreas Schwab
@ 2011-03-03 18:00   ` Uday S Reddy
  2011-03-03 23:40     ` Andreas Schwab
  0 siblings, 1 reply; 44+ messages in thread
From: Uday S Reddy @ 2011-03-03 18:00 UTC (permalink / raw)
  To: emacs-devel

On 3/3/2011 5:55 PM, Andreas Schwab wrote:

> In general no memory is reclaimed until the next garbage collection (but
> the buffer text is freed immediately).

Yes, of course.  I guess they become "reclaimable" after a buffer is killed.

So, if I have memory leaking, it would seem that the only possibility is 
from global variables?

Cheers,
Uday




^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: Memory leaks
  2011-03-03 18:00   ` Uday S Reddy
@ 2011-03-03 23:40     ` Andreas Schwab
  2011-03-04 11:39       ` Uday S Reddy
  0 siblings, 1 reply; 44+ messages in thread
From: Andreas Schwab @ 2011-03-03 23:40 UTC (permalink / raw)
  To: Uday S Reddy; +Cc: emacs-devel

Uday S Reddy <u.s.reddy@cs.bham.ac.uk> writes:

> So, if I have memory leaking, it would seem that the only possibility is
> from global variables?

How do you know that there is some leak?

Andreas.

-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: Memory leaks
  2011-03-03 23:40     ` Andreas Schwab
@ 2011-03-04 11:39       ` Uday S Reddy
  2011-03-04 12:19         ` Eli Zaretskii
  2011-03-07 19:19         ` Uday S Reddy
  0 siblings, 2 replies; 44+ messages in thread
From: Uday S Reddy @ 2011-03-04 11:39 UTC (permalink / raw)
  To: emacs-devel; +Cc: u.s.reddy

On 3/3/2011 11:40 PM, Andreas Schwab wrote:

> How do you know that there is some leak?

First there was a suspicion, and now I have been running experiments.

Here are the profiles returned by (garbage-collect), pretty-printed, for 
the same Emacs session over time.  In each case, the Emacs session was 
essentially empty, with just a few stray text buffers .  The difference 
is only in what happened in between.

Initial:

(:conses (102590 . 13880)
  :syms (20328 . 54)
  :miscs (830 . 152)
  :chars 570345 :vector 329747 :floats (72 . 111)
  :intervals (348 . 189)
  :strings (21259 . 5705))

After one visit to my INBOX folder (22MB) and quitting:

(:conses (663630 . 605600)
  :syms (32257 . 2608)
  :miscs (15443 . 18022)
  :chars 1639236 :vector 454670 :floats (345 . 261)
  :intervals (503 . 622)
  :strings (99122 . 90256))

After a second visit to the same folder and quitting:

(:conses (1113362 . 334402)
  :syms (32264 . 2807)
  :miscs (15467 . 36265)
  :chars 1833568 :vector 456351 :floats (345 . 328)
  :intervals (604 . 849)
  :strings (138140 . 122806))

After several hours of usage:

(:conses (1558351 . 313757)
  :syms (93011 . 347)
  :miscs (140492 . 28025)
  :chars 9264181 :vector 2283330 :floats (347 . 638)
  :intervals (2771 . 4880)
  :strings (467731 . 34316))

At this point, the total memory occupied was about 400MB, and Emacs 
complained that "memory was exhausted; save buffers and quit" (or 
something to that effect).  I ran garbage-collect, killed all the stray 
buffers and left it around for a while (about 10-15 minutes), and the 
memory came down to 340MB.  (The memory usage figures are from the 
Windows XP Task Manger - "VM Size" - VM here referring to the virtual 
memory.)

After that, I could do a couple of more folder visits and then Emacs 
crashed in the middle of a folder visit.  Come to think of it, almost 
all the Emacs crashes I have experienced over the last year or so were 
probably related to the memory leak problem.  They all happened when I 
was visiting a folder.

Recalling from my memory, these kind of crashes have started happening 
with Emacs 22.3.  There were no such crashes before then.  I stuck to 
Emacs 22.2 for a long time, hoping that whatever was causing the crashes 
would get fixed in due course.  But with every new release, the same 
kind of crashes appeared.

Here is a crash report from yesterday produced by DrMinGW. 
Unfortunately, I was in the middle of a Lisp debugger session and the 
crash happened while the debugger was trying print a large data 
structure.  But this does look like a memory problem to my untrained eye.

Cheers,
Uday


---------------


emacs.exe caused an Access Violation at location 77c47412 in module 
msvcrt.dll Writing to location 18874000.

Registers:
eax=00829240 ebx=02bb2802 ecx=00000000 edx=00000001 esi=008292bf 
edi=18874000
eip=77c47412 esp=00829290 ebp=00829298 iopl=0         nv up ei ng nz ac 
pe cy
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000 
efl=00000293

Call stack:
77C47412  msvcrt.dll:77C47412  memmove
0110AD0F  emacs.exe:0110AD0F  printchar  print.c:323

0110FC03  emacs.exe:0110FC03  print_object  print.c:1645

011105A3  emacs.exe:011105A3  print_object  print.c:1921

0111148E  emacs.exe:0111148E  print_object  print.c:2215

0111148E  emacs.exe:0111148E  print_object  print.c:2215

011105A3  emacs.exe:011105A3  print_object  print.c:1921

0111148E  emacs.exe:0111148E  print_object  print.c:2215

0111148E  emacs.exe:0111148E  print_object  print.c:2215

011105A3  emacs.exe:011105A3  print_object  print.c:1921

0111148E  emacs.exe:0111148E  print_object  print.c:2215

0111148E  emacs.exe:0111148E  print_object  print.c:2215

011105A3  emacs.exe:011105A3  print_object  print.c:1921

0111148E  emacs.exe:0111148E  print_object  print.c:2215

0111148E  emacs.exe:0111148E  print_object  print.c:2215

011105A3  emacs.exe:011105A3  print_object  print.c:1921

0111148E  emacs.exe:0111148E  print_object  print.c:2215

0111148E  emacs.exe:0111148E  print_object  print.c:2215

011105A3  emacs.exe:011105A3  print_object  print.c:1921

0111148E  emacs.exe:0111148E  print_object  print.c:2215

0111148E  emacs.exe:0111148E  print_object  print.c:2215

011105A3  emacs.exe:011105A3  print_object  print.c:1921

0111148E  emacs.exe:0111148E  print_object  print.c:2215

0111148E  emacs.exe:0111148E  print_object  print.c:2215

011105A3  emacs.exe:011105A3  print_object  print.c:1921

0111148E  emacs.exe:0111148E  print_object  print.c:2215

0111148E  emacs.exe:0111148E  print_object  print.c:2215

011105A3  emacs.exe:011105A3  print_object  print.c:1921

0111148E  emacs.exe:0111148E  print_object  print.c:2215

0111148E  emacs.exe:0111148E  print_object  print.c:2215

011105A3  emacs.exe:011105A3  print_object  print.c:1921

0111148E  emacs.exe:0111148E  print_object  print.c:2215

0111148E  emacs.exe:0111148E  print_object  print.c:2215

011105A3  emacs.exe:011105A3  print_object  print.c:1921

0110EAE2  emacs.exe:0110EAE2  print  print.c:1305

0110CF92  emacs.exe:0110CF92  Fprin1  print.c:751

01022B04  emacs.exe:01022B04  Ffuncall  eval.c:3034

01114C11  emacs.exe:01114C11  Fbyte_code  bytecode.c:680

010232C3  emacs.exe:010232C3  funcall_lambda  eval.c:3220

01022D03  emacs.exe:01022D03  Ffuncall  eval.c:3077

01114C11  emacs.exe:01114C11  Fbyte_code  bytecode.c:680

01021B46  emacs.exe:01021B46  Feval  eval.c:2356

0101ED68  emacs.exe:0101ED68  Fprogn  eval.c:415

01102A41  emacs.exe:01102A41  Fsave_window_excursion  window.c:6575

0111579A  emacs.exe:0111579A  Fbyte_code  bytecode.c:841

010232C3  emacs.exe:010232C3  funcall_lambda  eval.c:3220

01022D03  emacs.exe:01022D03  Ffuncall  eval.c:3077

010221D6  emacs.exe:010221D6  Fapply  eval.c:2506

010225FD  emacs.exe:010225FD  apply1  eval.c:2780

0101EB72  emacs.exe:0101EB72  call_debugger  eval.c:272

01022E12  emacs.exe:01022E12  Ffuncall  eval.c:3102

01114C11  emacs.exe:01114C11  Fbyte_code  bytecode.c:680

01021B46  emacs.exe:01021B46  Feval  eval.c:2356

01020165  emacs.exe:01020165  internal_catch  eval.c:1228

0111580E  emacs.exe:0111580E  Fbyte_code  bytecode.c:855

010232C3  emacs.exe:010232C3  funcall_lambda  eval.c:3220

01022D03  emacs.exe:01022D03  Ffuncall  eval.c:3077

010221D6  emacs.exe:010221D6  Fapply  eval.c:2506

010225FD  emacs.exe:010225FD  apply1  eval.c:2780

01117B84  emacs.exe:01117B84  Fcall_interactively  callint.c:396

01022B2E  emacs.exe:01022B2E  Ffuncall  eval.c:3037

010226CC  emacs.exe:010226CC  call3  eval.c:2857

01014D52  emacs.exe:01014D52  Fcommand_execute  keyboard.c:10562

010150C3  emacs.exe:010150C3  Fexecute_extended_command  keyboard.c:10675

01022AE3  emacs.exe:01022AE3  Ffuncall  eval.c:3031

0111932A  emacs.exe:0111932A  Fcall_interactively  callint.c:869

01022B2E  emacs.exe:01022B2E  Ffuncall  eval.c:3037

010226CC  emacs.exe:010226CC  call3  eval.c:2857

01014D52  emacs.exe:01014D52  Fcommand_execute  keyboard.c:10562

010076E0  emacs.exe:010076E0  command_loop_1  keyboard.c:1914

01020614  emacs.exe:01020614  internal_condition_case  eval.c:1492

01005FE3  emacs.exe:01005FE3  command_loop_2  keyboard.c:1362

01020165  emacs.exe:01020165  internal_catch  eval.c:1228

01005F9C  emacs.exe:01005F9C  command_loop  keyboard.c:1342

0100588E  emacs.exe:0100588E  recursive_edit_1  keyboard.c:956

010059F7  emacs.exe:010059F7  Frecursive_edit  keyboard.c:1019

010028F5  emacs.exe:010028F5  main  emacs.c:1835

010010DB  emacs.exe:010010DB
01001178  emacs.exe:01001178
010036D0  emacs.exe:010036D0  _start  unexw32.c:131

7C817077  kernel32.dll:7C817077  RegisterWaitForInputIdle





^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: Memory leaks
  2011-03-04 11:39       ` Uday S Reddy
@ 2011-03-04 12:19         ` Eli Zaretskii
  2011-03-04 12:59           ` Uday S Reddy
  2011-03-07 19:19         ` Uday S Reddy
  1 sibling, 1 reply; 44+ messages in thread
From: Eli Zaretskii @ 2011-03-04 12:19 UTC (permalink / raw)
  To: Uday S Reddy; +Cc: emacs-devel

> From: Uday S Reddy <u.s.reddy@cs.bham.ac.uk>
> Date: Fri, 04 Mar 2011 11:39:05 +0000
> Cc: u.s.reddy@cs.bham.ac.uk
> 
> Initial:
> 
> (:conses (102590 . 13880)
>   :syms (20328 . 54)
>   :miscs (830 . 152)
>   :chars 570345 :vector 329747 :floats (72 . 111)
>   :intervals (348 . 189)
>   :strings (21259 . 5705))
> 
> After one visit to my INBOX folder (22MB) and quitting:
> 
> (:conses (663630 . 605600)
>   :syms (32257 . 2608)
>   :miscs (15443 . 18022)
>   :chars 1639236 :vector 454670 :floats (345 . 261)
>   :intervals (503 . 622)
>   :strings (99122 . 90256))
> 
> After a second visit to the same folder and quitting:
> 
> (:conses (1113362 . 334402)
>   :syms (32264 . 2807)
>   :miscs (15467 . 36265)
>   :chars 1833568 :vector 456351 :floats (345 . 328)
>   :intervals (604 . 849)
>   :strings (138140 . 122806))

Is this with Rmail or with some other mail agent?

With Rmail, I cannot reproduce this with the current trunk.  Here are
my results of garbage-collect, the first one is the initial one, the
others are pairs, where the first one is after visiting my 15MB INBOX,
the second one after killing the RMAIL buffer:

((49547 . 8089) (14061 . 0) (21 . 113) 63254 292573 (44 . 78) (322 . 66) (3574 . 2033))

((69953 . 4823) (16430 . 0) (2030 . 3583) 219252 322528 (49 . 73) (373 . 128) (10009 . 4103))

((67776 . 6125) (16430 . 0) (33 . 246) 217261 316518 (49 . 73) (365 . 136) (10006 . 4106))

((70073 . 6199) (16434 . 0) (2032 . 3089) 219400 322528 (49 . 73) (388 . 164) (10016 . 4096))

((67867 . 6905) (16434 . 0) (35 . 340) 217317 316510 (49 . 73) (379 . 137) (10010 . 4102))

((70162 . 6779) (16438 . 0) (2034 . 3007) 219418 322528 (49 . 73) (400 . 167) (10018 . 4094))

((67956 . 7360) (16438 . 0) (37 . 342) 217335 316510 (49 . 73) (391 . 176) (10012 . 4100))

You can see that the counters go up very slowly, much slower than what
you report.

In fact, the initial report in my cases shows counters that are
several times smaller than in your case.  Can you explain this
discrepancy?

I see similar numbers in Emacs 23.3, so it's not like the trunk is
very different.



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: Memory leaks
  2011-03-04 12:19         ` Eli Zaretskii
@ 2011-03-04 12:59           ` Uday S Reddy
  0 siblings, 0 replies; 44+ messages in thread
From: Uday S Reddy @ 2011-03-04 12:59 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Uday S Reddy, emacs-devel

Eli Zaretskii writes:

> Is this with Rmail or with some other mail agent?

Hi Eli, my figures for VM, the mail agent that I maintain.  It is much
more of a feature-laden system.  So, it probably uses more memory.
But the problem I am after is the one that the memory is leaking, it
is not getting reused.

I don't know yet whether it is a VM problem or an Emacs problem.  I am
still trying to understand what is going on.

Any tips would be great!

Cheers,
Uday



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: Memory leaks
  2011-03-04 11:39       ` Uday S Reddy
  2011-03-04 12:19         ` Eli Zaretskii
@ 2011-03-07 19:19         ` Uday S Reddy
  2011-03-07 20:33           ` Andreas Schwab
  1 sibling, 1 reply; 44+ messages in thread
From: Uday S Reddy @ 2011-03-07 19:19 UTC (permalink / raw)
  To: emacs-devel

On 3/4/2011 11:39 AM, Uday S Reddy wrote:

> After several hours of usage:
>
> (:conses (1558351 . 313757)
> :syms (93011 . 347)
> :miscs (140492 . 28025)
> :chars 9264181 :vector 2283330 :floats (347 . 638)
> :intervals (2771 . 4880)
> :strings (467731 . 34316))

One of the things I have decided to check is what I am doing with 
vectors because more than 2M vector slots were being locked up in an 
empty Emacs session.

A widespread use of vectors in VM is for obarrays.  The code might look 
something like this:

    (let ((obarray (make-vector 67 0)))
       ... intern lots of symbols in obarray
       (setq buffer-local-var obarray))

I have begun to wonder if obarray gets freed after buffer-local-var 
stops pointing to it, say through another setq to buffer-local-var.

Am I supposed to unintern the symbols to free up their memory?

Cheers,
Uday




^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: Memory leaks
  2011-03-07 19:19         ` Uday S Reddy
@ 2011-03-07 20:33           ` Andreas Schwab
  2011-03-07 22:27             ` David Kastrup
  2011-03-07 23:01             ` Uday S Reddy
  0 siblings, 2 replies; 44+ messages in thread
From: Andreas Schwab @ 2011-03-07 20:33 UTC (permalink / raw)
  To: Uday S Reddy; +Cc: emacs-devel

Uday S Reddy <u.s.reddy@cs.bham.ac.uk> writes:

> I have begun to wonder if obarray gets freed after buffer-local-var stops
> pointing to it, say through another setq to buffer-local-var.

Obarrays are ordinary vectors, that get garbage collected like any other
object.

Andreas.

-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: Memory leaks
  2011-03-07 20:33           ` Andreas Schwab
@ 2011-03-07 22:27             ` David Kastrup
  2011-03-07 22:49               ` David Kastrup
  2011-03-09  0:39               ` Richard Stallman
  2011-03-07 23:01             ` Uday S Reddy
  1 sibling, 2 replies; 44+ messages in thread
From: David Kastrup @ 2011-03-07 22:27 UTC (permalink / raw)
  To: emacs-devel

Andreas Schwab <schwab@linux-m68k.org> writes:

> Uday S Reddy <u.s.reddy@cs.bham.ac.uk> writes:
>
>> I have begun to wonder if obarray gets freed after buffer-local-var stops
>> pointing to it, say through another setq to buffer-local-var.
>
> Obarrays are ordinary vectors, that get garbage collected like any other
> object.

Unfortunately, symbols are daisy-chained from their obarray bucket, so
even unused symbols can't be collected until all their successors in the
hidden hash bucket chain have become unused as well.

-- 
David Kastrup




^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: Memory leaks
  2011-03-07 22:27             ` David Kastrup
@ 2011-03-07 22:49               ` David Kastrup
  2011-03-09  0:39               ` Richard Stallman
  1 sibling, 0 replies; 44+ messages in thread
From: David Kastrup @ 2011-03-07 22:49 UTC (permalink / raw)
  To: emacs-devel

David Kastrup <dak@gnu.org> writes:

> Andreas Schwab <schwab@linux-m68k.org> writes:
>
>> Uday S Reddy <u.s.reddy@cs.bham.ac.uk> writes:
>>
>>> I have begun to wonder if obarray gets freed after buffer-local-var stops
>>> pointing to it, say through another setq to buffer-local-var.
>>
>> Obarrays are ordinary vectors, that get garbage collected like any other
>> object.
>
> Unfortunately, symbols are daisy-chained from their obarray bucket, so
> even unused symbols can't be collected until all their successors in
> the hidden hash bucket chain have become unused as well.

Their predecessors I mean.

-- 
David Kastrup




^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: Memory leaks
  2011-03-07 20:33           ` Andreas Schwab
  2011-03-07 22:27             ` David Kastrup
@ 2011-03-07 23:01             ` Uday S Reddy
  2011-03-08  2:35               ` Stefan Monnier
  1 sibling, 1 reply; 44+ messages in thread
From: Uday S Reddy @ 2011-03-07 23:01 UTC (permalink / raw)
  To: emacs-devel

On 3/7/2011 8:33 PM, Andreas Schwab wrote:
> Uday S Reddy<u.s.reddy@cs.bham.ac.uk>  writes:
>
>> I have begun to wonder if obarray gets freed after buffer-local-var stops
>> pointing to it, say through another setq to buffer-local-var.
>
> Obarrays are ordinary vectors, that get garbage collected like any other
> object.

I didn't think the vectors themselves would be in trouble, but rather 
what is behind the vectors: the buckets, the symbols and so on.  Even 
after the vectors are gone, there could be references to the symbols in 
other places, could there not?  So, it is not entirely clear when all 
that memory could be collected?

Cheers,
Uday




^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: Memory leaks
  2011-03-07 23:01             ` Uday S Reddy
@ 2011-03-08  2:35               ` Stefan Monnier
  2011-03-08  8:57                 ` Andreas Schwab
  0 siblings, 1 reply; 44+ messages in thread
From: Stefan Monnier @ 2011-03-08  2:35 UTC (permalink / raw)
  To: Uday S Reddy; +Cc: emacs-devel

>>> I have begun to wonder if obarray gets freed after buffer-local-var stops
>>> pointing to it, say through another setq to buffer-local-var.
>> Obarrays are ordinary vectors, that get garbage collected like any other
>> object.
> I didn't think the vectors themselves would be in trouble, but rather what
> is behind the vectors: the buckets, the symbols and so on.  Even after the
> vectors are gone, there could be references to the symbols in other places,
> could there not?  So, it is not entirely clear when all that memory could
> be collected?

But then you'd have lots of symbols, not lots of vectors.


        Stefan



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: Memory leaks
  2011-03-08  2:35               ` Stefan Monnier
@ 2011-03-08  8:57                 ` Andreas Schwab
  2011-03-09  0:40                   ` Richard Stallman
  0 siblings, 1 reply; 44+ messages in thread
From: Andreas Schwab @ 2011-03-08  8:57 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Uday S Reddy, emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>>>> I have begun to wonder if obarray gets freed after buffer-local-var stops
>>>> pointing to it, say through another setq to buffer-local-var.
>>> Obarrays are ordinary vectors, that get garbage collected like any other
>>> object.
>> I didn't think the vectors themselves would be in trouble, but rather what
>> is behind the vectors: the buckets, the symbols and so on.  Even after the
>> vectors are gone, there could be references to the symbols in other places,
>> could there not?  So, it is not entirely clear when all that memory could
>> be collected?
>
> But then you'd have lots of symbols, not lots of vectors.

Unless those symbols have lots of vectors as some of their values.

Andreas.

-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: Memory leaks
  2011-03-07 22:27             ` David Kastrup
  2011-03-07 22:49               ` David Kastrup
@ 2011-03-09  0:39               ` Richard Stallman
  1 sibling, 0 replies; 44+ messages in thread
From: Richard Stallman @ 2011-03-09  0:39 UTC (permalink / raw)
  To: David Kastrup; +Cc: emacs-devel

    Unfortunately, symbols are daisy-chained from their obarray bucket, so
    even unused symbols can't be collected until all their successors in the
    hidden hash bucket chain have become unused as well.

It would not be hard to make GC know how to GC symbols and delete them
from the obarray.  This is a traditional Lisp feature that I left out
to make Emacs smaller.

However, it won't do much good unless you create a lot of symbols that
you don't need for long.  Is that happening?

-- 
Dr Richard Stallman
President, Free Software Foundation
51 Franklin St
Boston MA 02110
USA
www.fsf.org, www.gnu.org



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: Memory leaks
  2011-03-08  8:57                 ` Andreas Schwab
@ 2011-03-09  0:40                   ` Richard Stallman
  2011-03-09  6:07                     ` David Kastrup
  0 siblings, 1 reply; 44+ messages in thread
From: Richard Stallman @ 2011-03-09  0:40 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: u.s.reddy, monnier, emacs-devel

Is it possible to write code to record which vectors were consed by
the operation suspected of having a memory leak?  Then a function to
call from GDB to test whether a vector are still alive.

After you find one, you could do a GC with a conditional breakpoint
to stop when that vector is marked.  Then you would see exactly
what is keeping it alive.  If you do this for each vector that was
consed during the operation in question, you will eventually find
one that was expected to be GC'd, and find the bug.

-- 
Dr Richard Stallman
President, Free Software Foundation
51 Franklin St
Boston MA 02110
USA
www.fsf.org, www.gnu.org



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: Memory leaks
  2011-03-09  0:40                   ` Richard Stallman
@ 2011-03-09  6:07                     ` David Kastrup
  0 siblings, 0 replies; 44+ messages in thread
From: David Kastrup @ 2011-03-09  6:07 UTC (permalink / raw)
  To: emacs-devel

Richard Stallman <rms@gnu.org> writes:

> Is it possible to write code to record which vectors were consed by
> the operation suspected of having a memory leak?  Then a function to
> call from GDB to test whether a vector are still alive.

It should be possible to record them in a key-weak hashtable.  If they
don't leave after explicitly calling the garbage collector, you've got a
leak.

-- 
David Kastrup



^ permalink raw reply	[flat|nested] 44+ messages in thread

* memory leaks
@ 2019-09-20  7:23 Madhu
  2019-09-20  8:00 ` Jean-Christophe Helary
  2019-09-20  8:11 ` Eli Zaretskii
  0 siblings, 2 replies; 44+ messages in thread
From: Madhu @ 2019-09-20  7:23 UTC (permalink / raw)
  To: help-gnu-emacs


There is obviously some memory leak in emacs and I don't know how to
trace the culprit.  Emacs lops up 2GB RSS: ps axuw |grep emacs

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
madhu     5434  6.9 54.2 2235612 2115564 ?     SNsl Sep19  66:42 emacs --daemon --debug-init

(garbage-collect) shows

((conses 16 981544 136697)
 (symbols 48 56864 5)
 (strings 32 312273 12669)
 (string-bytes 1 18002558)
 (vectors 16 68285)
 (vector-slots 8 1780950 150102)
 (floats 8 1089 2405)
 (intervals 56 6605 2469)
 (buffers 992 79))

So does this look like a X fonts issue?  How can I figure out which
package is the culprit.

1. Emacs has a bug where I can't look at /proc/5434/emacs from within
emacs it will only read 16384 bytes from the proc filesystem

2. Trying to Unload a feature hits all sorts of design and
implementation bugs with the cl-generics scourge which is unfortunately
used to implement emacs.  Is unloading features likely to help at all in
reducing the memory and getting a clue about the errant package?







^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: memory leaks
  2019-09-20  7:23 Madhu
@ 2019-09-20  8:00 ` Jean-Christophe Helary
  2019-09-20  8:11 ` Eli Zaretskii
  1 sibling, 0 replies; 44+ messages in thread
From: Jean-Christophe Helary @ 2019-09-20  8:00 UTC (permalink / raw)
  To: Help Gnu Emacs mailing list

I had something similar happening the other day and Eli told me it was probably fixed with some code recently committed to master. Have you tried a recent build ?

Jean-Christophe Helary 

> On Sep 20, 2019, at 16:23, Madhu <enometh@meer.net> wrote:
> 
> 
> There is obviously some memory leak in emacs and I don't know how to
> trace the culprit.  Emacs lops up 2GB RSS: ps axuw |grep emacs
> 
> USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
> madhu     5434  6.9 54.2 2235612 2115564 ?     SNsl Sep19  66:42 emacs --daemon --debug-init

Jean-Christophe Helary
-----------------------------------------------
http://mac4translators.blogspot.com @brandelune





^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: memory leaks
  2019-09-20  7:23 Madhu
  2019-09-20  8:00 ` Jean-Christophe Helary
@ 2019-09-20  8:11 ` Eli Zaretskii
       [not found]   ` <mailman.572.1568967069.2190.help-gnu-emacs@gnu.org>
  1 sibling, 1 reply; 44+ messages in thread
From: Eli Zaretskii @ 2019-09-20  8:11 UTC (permalink / raw)
  To: help-gnu-emacs

> From: Madhu <enometh@meer.net>
> Date: Fri, 20 Sep 2019 12:53:46 +0530
> 
> 
> There is obviously some memory leak in emacs and I don't know how to
> trace the culprit.  Emacs lops up 2GB RSS: ps axuw |grep emacs
> 
> USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
> madhu     5434  6.9 54.2 2235612 2115564 ?     SNsl Sep19  66:42 emacs --daemon --debug-init

Which version of Emacs?  If this is a development snapshot, when was
it built?

> 1. Emacs has a bug where I can't look at /proc/5434/emacs from within
> emacs it will only read 16384 bytes from the proc filesystem

Please report as a bug using "M-x report-emacs-bug".

> 2. Trying to Unload a feature hits all sorts of design and
> implementation bugs with the cl-generics scourge which is unfortunately
> used to implement emacs.  Is unloading features likely to help at all in
> reducing the memory and getting a clue about the errant package?

Likewise.



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: memory leaks
       [not found]   ` <mailman.572.1568967069.2190.help-gnu-emacs@gnu.org>
@ 2019-09-20  8:31     ` Madhu
  2019-09-20  9:21       ` Eli Zaretskii
  0 siblings, 1 reply; 44+ messages in thread
From: Madhu @ 2019-09-20  8:31 UTC (permalink / raw)
  To: help-gnu-emacs

* Eli Zaretskii <mailman.572.1568967069.2190.help-gnu-emacs@gnu.org> :
Wrote on Fri, 20 Sep 2019 11:11:11 +0300:

>> From: Madhu <enometh@meer.net>
>> Date: Fri, 20 Sep 2019 12:53:46 +0530
>> There is obviously some memory leak in emacs and I don't know how to
>> trace the culprit.  Emacs lops up 2GB RSS: ps axuw |grep emacs
>>
>> USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
>> madhu 5434 6.9 54.2 2235612 2115564 ?  SNsl Sep19 66:42 emacs
>> --daemon --debug-init
>
> Which version of Emacs?  If this is a development snapshot, when was
> it built?

Sorry I neglected to include that info: it is master from around
20-Aug-2019: (commit 08d7cab)

GNU Emacs 27.0.50 (build 1, x86_64-pc-linux-gnu, X toolkit, Xaw scroll
bars) of 2019-08-20

If there isn't a known problem I'd still appreciate a clue or two in
trying to figure out what the problem is.




^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: memory leaks
  2019-09-20  8:31     ` Madhu
@ 2019-09-20  9:21       ` Eli Zaretskii
       [not found]         ` <mailman.578.1568971399.2190.help-gnu-emacs@gnu.org>
  0 siblings, 1 reply; 44+ messages in thread
From: Eli Zaretskii @ 2019-09-20  9:21 UTC (permalink / raw)
  To: help-gnu-emacs

> From: Madhu <enometh@meer.net>
> Date: Fri, 20 Sep 2019 14:01:05 +0530
> 
> >> USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
> >> madhu 5434 6.9 54.2 2235612 2115564 ?  SNsl Sep19 66:42 emacs
> >> --daemon --debug-init
> >
> > Which version of Emacs?  If this is a development snapshot, when was
> > it built?
> 
> Sorry I neglected to include that info: it is master from around
> 20-Aug-2019: (commit 08d7cab)

Then what you see is almost certainly a problem with GC that has been
solved recently.  Update from Git and rebuild.



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: memory leaks
       [not found]         ` <mailman.578.1568971399.2190.help-gnu-emacs@gnu.org>
@ 2020-09-12 13:02           ` Madhu
  2020-09-12 13:39             ` Eli Zaretskii
  0 siblings, 1 reply; 44+ messages in thread
From: Madhu @ 2020-09-12 13:02 UTC (permalink / raw)
  To: help-gnu-emacs

* Eli Zaretskii <mailman.578.1568971399.2190.help-gnu-emacs@gnu.org> :
Wrote on Fri, 20 Sep 2019 12:21:23 +0300:

>> From: Madhu <enometh@meer.net>
>> Date: Fri, 20 Sep 2019 14:01:05 +0530
>>
>> >> USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
>> >> madhu 5434 6.9 54.2 2235612 2115564 ?  SNsl Sep19 66:42 emacs
>> >> --daemon --debug-init
>> >
>> > Which version of Emacs?  If this is a development snapshot, when was
>> > it built?
>>
>> Sorry I neglected to include that info: it is master from around
>> 20-Aug-2019: (commit 08d7cab)
>
> Then what you see is almost certainly a problem with GC that has been
> solved recently.  Update from Git and rebuild.

One year on I'm having the same problems on master (and I've been
noticing it for a few months now)

virtual memory reports 2.9G resident 2.5G shared 10.9M.

$ ps o pid,rss,drs,sz,share,start_time,vsize,cmd 26285

  PID   RSS   DRS  SIZE - START    VSZ CMD
26285 2643236 2996379 2664940 - Sep09 2998948 /7/gtk/emacs/build-xt-xft/src/emacs --debug-init --daemon

GC reports
Memory information:
((conses 16 3591911 2541685)
 (symbols 48 87049 452)
 (strings 32 528119 452566)
 (string-bytes 1 30189681)
 (vectors 16 217149)
 (vector-slots 8 3232842 6057920)
 (floats 8 1637 5252)
 (intervals 56 501483 50429)
 (buffers 992 581))

which is a small fraction of what emacs is using.

This is on a recent emacs from master
In GNU Emacs 28.0.50 (build 1, x86_64-pc-linux-gnu, X toolkit, Xaw3d
scroll bars)  of 2020-09-06 built on maher
Base Repository revision: 6fc502c1ef327ab357c971b9bffbbd7cb6a436f1
Windowing system distributor 'The X.Org Foundation', version 11.0.12008000


Perhaps there is already a bug report for this on debbugs?



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: memory leaks
  2020-09-12 13:02           ` Madhu
@ 2020-09-12 13:39             ` Eli Zaretskii
  2020-09-12 13:55               ` Michael Heerdegen
  2020-09-12 19:14               ` Igor Sosa Mayor
  0 siblings, 2 replies; 44+ messages in thread
From: Eli Zaretskii @ 2020-09-12 13:39 UTC (permalink / raw)
  To: help-gnu-emacs

> From: Madhu <enometh@meer.net>
> Date: Sat, 12 Sep 2020 18:32:11 +0530
> 
> One year on I'm having the same problems on master (and I've been
> noticing it for a few months now)
> 
> virtual memory reports 2.9G resident 2.5G shared 10.9M.

Fascinating.  Why no one else has these problems, I wonder.

> Perhaps there is already a bug report for this on debbugs?

I don't think so, so please file a bug report with all the details
(mainly how do you get from starting Emacs to such a huge RSS).



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: memory leaks
  2020-09-12 13:39             ` Eli Zaretskii
@ 2020-09-12 13:55               ` Michael Heerdegen
  2020-09-12 14:09                 ` Eli Zaretskii
  2020-09-12 19:14               ` Igor Sosa Mayor
  1 sibling, 1 reply; 44+ messages in thread
From: Michael Heerdegen @ 2020-09-12 13:55 UTC (permalink / raw)
  To: help-gnu-emacs

Eli Zaretskii <eliz@gnu.org> writes:

> > virtual memory reports 2.9G resident 2.5G shared 10.9M.
>
> Fascinating.  Why no one else has these problems, I wonder.

I have the problem.  From time to time I see that my memory is getting
out and Emacs uses 4 GB of it.  I use to restart Emacs then.

Michael.




^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: memory leaks
  2020-09-12 13:55               ` Michael Heerdegen
@ 2020-09-12 14:09                 ` Eli Zaretskii
  0 siblings, 0 replies; 44+ messages in thread
From: Eli Zaretskii @ 2020-09-12 14:09 UTC (permalink / raw)
  To: help-gnu-emacs

> From: Michael Heerdegen <michael_heerdegen@web.de>
> Date: Sat, 12 Sep 2020 15:55:33 +0200
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> > > virtual memory reports 2.9G resident 2.5G shared 10.9M.
> >
> > Fascinating.  Why no one else has these problems, I wonder.
> 
> I have the problem.  From time to time I see that my memory is getting
> out and Emacs uses 4 GB of it.  I use to restart Emacs then.

Then I wonder how come you didn't report it earlier, with all the
details.  Please do that now, TIA.



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: memory leaks
  2020-09-12 13:39             ` Eli Zaretskii
  2020-09-12 13:55               ` Michael Heerdegen
@ 2020-09-12 19:14               ` Igor Sosa Mayor
  2020-09-12 19:26                 ` Eli Zaretskii
  1 sibling, 1 reply; 44+ messages in thread
From: Igor Sosa Mayor @ 2020-09-12 19:14 UTC (permalink / raw)
  To: help-gnu-emacs

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Madhu <enometh@meer.net>
>> Date: Sat, 12 Sep 2020 18:32:11 +0530
>> 
>> One year on I'm having the same problems on master (and I've been
>> noticing it for a few months now)
>> 
>> virtual memory reports 2.9G resident 2.5G shared 10.9M.
>
> Fascinating.  Why no one else has these problems, I wonder.

[...]

I am also experiencing a similar problem (version 27.1 in archlinux)...






^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: memory leaks
  2020-09-12 19:14               ` Igor Sosa Mayor
@ 2020-09-12 19:26                 ` Eli Zaretskii
  2020-09-12 19:28                   ` Igor Sosa Mayor
  2020-09-13  3:17                   ` Madhu
  0 siblings, 2 replies; 44+ messages in thread
From: Eli Zaretskii @ 2020-09-12 19:26 UTC (permalink / raw)
  To: help-gnu-emacs

> From: Igor Sosa Mayor <joseleopoldo1792@gmail.com>
> Date: Sat, 12 Sep 2020 21:14:01 +0200
> 
> I am also experiencing a similar problem (version 27.1 in archlinux)...

Then I'd appreciate if everyone who is experiencing these problems
will please describe them in a full-fledged bug report, including how
long it takes to get to such large RSS values from the start.

Please don't leave such problems unreported.  They will not fix
themselves.

TIA



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: memory leaks
  2020-09-12 19:26                 ` Eli Zaretskii
@ 2020-09-12 19:28                   ` Igor Sosa Mayor
  2020-09-13  2:30                     ` Eli Zaretskii
  2020-09-13  3:17                   ` Madhu
  1 sibling, 1 reply; 44+ messages in thread
From: Igor Sosa Mayor @ 2020-09-12 19:28 UTC (permalink / raw)
  To: help-gnu-emacs

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Igor Sosa Mayor <joseleopoldo1792@gmail.com>
>> Date: Sat, 12 Sep 2020 21:14:01 +0200
>> 
>> I am also experiencing a similar problem (version 27.1 in archlinux)...
>
> Then I'd appreciate if everyone who is experiencing these problems
> will please describe them in a full-fledged bug report, including how
> long it takes to get to such large RSS values from the start.
>
> Please don't leave such problems unreported.  They will not fix
> themselves.

Of course. But I'm doing some preliminary research on my own, because I
thought, maybe it is a problem with one of the hundreds of packages I
load...




^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: memory leaks
  2020-09-12 19:28                   ` Igor Sosa Mayor
@ 2020-09-13  2:30                     ` Eli Zaretskii
  0 siblings, 0 replies; 44+ messages in thread
From: Eli Zaretskii @ 2020-09-13  2:30 UTC (permalink / raw)
  To: help-gnu-emacs

> From: Igor Sosa Mayor <joseleopoldo1792@gmail.com>
> Date: Sat, 12 Sep 2020 21:28:27 +0200
> 
> > Please don't leave such problems unreported.  They will not fix
> > themselves.
> 
> Of course. But I'm doing some preliminary research on my own, because I
> thought, maybe it is a problem with one of the hundreds of packages I
> load...

Thank you.



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: memory leaks
  2020-09-12 19:26                 ` Eli Zaretskii
  2020-09-12 19:28                   ` Igor Sosa Mayor
@ 2020-09-13  3:17                   ` Madhu
  2020-09-13 14:14                     ` Eli Zaretskii
  2020-09-13 20:14                     ` Stefan Monnier
  1 sibling, 2 replies; 44+ messages in thread
From: Madhu @ 2020-09-13  3:17 UTC (permalink / raw)
  To: help-gnu-emacs


* Eli Zaretskii <83imcidcfp.fsf@gnu.org> :
Wrote on Sat, 12 Sep 2020 22:26:02 +0300:
> Then I'd appreciate if everyone who is experiencing these problems
> will please describe them in a full-fledged bug report, including how
> long it takes to get to such large RSS values from the start.
>
> Please don't leave such problems unreported.  They will not fix
> themselves.

The problem is that there is nothing to report except that the RSS is
growing unreasonably.  In normal operation with all my packages loaded
emacs wouldn't go beyond around 500M RSS even when running for a week.

I usually only notice the leak when it has gone beyond 2G - when linux
refuses to suspend because I have limited swap.  In most cases emacs
would be running for a few days.  There are over 600 `features' in these
emacs but the major memory hog packages I was using are magit, sly,
gnus, and ivy - but I don't think these can be the culprits.

ATM I have a gtk emacs instance that is running at ~900M RSS, which may
be an early stage.  If you have any suggestions on how to go about
debugging GC - it would help in submitting a useful bug repoprt. But as
of now I have nothing more than "it leaks"





^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: memory leaks
  2020-09-13  3:17                   ` Madhu
@ 2020-09-13 14:14                     ` Eli Zaretskii
  2021-01-21  9:28                       ` Madhu
  2020-09-13 20:14                     ` Stefan Monnier
  1 sibling, 1 reply; 44+ messages in thread
From: Eli Zaretskii @ 2020-09-13 14:14 UTC (permalink / raw)
  To: help-gnu-emacs

> From: Madhu <enometh@meer.net>
> Date: Sun, 13 Sep 2020 08:47:29 +0530
> 
> > Please don't leave such problems unreported.  They will not fix
> > themselves.
> 
> The problem is that there is nothing to report except that the RSS is
> growing unreasonably.  In normal operation with all my packages loaded
> emacs wouldn't go beyond around 500M RSS even when running for a week.

When you file a bug report, Emacs collects important information about
your build and the environment in which you run Emacs.  That already
tells the Emacs developers a lot, and can give ideas regarding the
possible reasons.

Then I suggest to tell in your report how many buffers you have in
that session, and what is their total size.

And finally, I'd encourage you to try to describe your use patterns,
especially regarding operations that could require significant amounts
of memory: visiting large file, loading many fonts, creating large
buffers that don't visit files, etc.  If you can afford keeping notes
about what you did immediately prior to RSS becoming significantly
larger, that is even better.

> ATM I have a gtk emacs instance that is running at ~900M RSS, which may
> be an early stage.  If you have any suggestions on how to go about
> debugging GC - it would help in submitting a useful bug repoprt.

I don't think the problem is in GC, and the information about that is
part of the info collected by report-emacs-bug anyway.

Thanks.



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: memory leaks
  2020-09-13  3:17                   ` Madhu
  2020-09-13 14:14                     ` Eli Zaretskii
@ 2020-09-13 20:14                     ` Stefan Monnier
  2020-09-14 10:06                       ` Madhu
  1 sibling, 1 reply; 44+ messages in thread
From: Stefan Monnier @ 2020-09-13 20:14 UTC (permalink / raw)
  To: help-gnu-emacs

> The problem is that there is nothing to report except that the RSS is
> growing unreasonably.  In normal operation with all my packages loaded
> emacs wouldn't go beyond around 500M RSS even when running for a week.

The `garbage-collect` command actually can return info about the current
Lisp heap use.  The `memory-usage` package can display it in a more
user-friendly format.

That can be very useful to see if those 500MB belong to the Lisp heap or
to ... something else (typically libraries, like those of the GUI or
those used to display images).


        Stefan




^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: memory leaks
  2020-09-13 20:14                     ` Stefan Monnier
@ 2020-09-14 10:06                       ` Madhu
  2020-11-09 17:50                         ` Madhu
  0 siblings, 1 reply; 44+ messages in thread
From: Madhu @ 2020-09-14 10:06 UTC (permalink / raw)
  To: help-gnu-emacs


* Stefan Monnier <jwvh7s1780o.fsf-monnier+emacs@gnu.org> :
Wrote on Sun, 13 Sep 2020 16:14:36 -0400:
> The `garbage-collect` command actually can return info about the current
> Lisp heap use.  The `memory-usage` package can display it in a more
> user-friendly format.
>
> That can be very useful to see if those 500MB belong to the Lisp heap or
> to ... something else (typically libraries, like those of the GUI or
> those used to display images).

The numbers I reported by garbage-collect do not account for the memory
usage. FWIW I've posted that info again at
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=43395

In 2019 i suspected the culprit was the fonts system.  It doesn't seem
to be toolkit related. I don't use emacs as an imageviewer (but I have
to check that). Since the interest in CONFIG_PSI there are a number of
tools on github that monitor memory - it should be possible to come up
with some tool that alerts emacs of memory surges while keeping some
history.



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: memory leaks
  2020-09-14 10:06                       ` Madhu
@ 2020-11-09 17:50                         ` Madhu
  2022-03-04 11:32                           ` Eli Zaretskii
  0 siblings, 1 reply; 44+ messages in thread
From: Madhu @ 2020-11-09 17:50 UTC (permalink / raw)
  To: help-gnu-emacs

* Madhu <m35z8gise6.fsf@leonis4.robolove.meer.net> :
Wrote on Mon, 14 Sep 2020 15:36:57 +0530:
> The numbers I reported by garbage-collect do not account for the memory
> usage. FWIW I've posted that info again at
> https://debbugs.gnu.org/cgi/bugreport.cgi?bug=43395
>
> In 2019 i suspected the culprit was the fonts system.  It doesn't seem
> to be toolkit related. I don't use emacs as an imageviewer (but I have
> to check that). Since the interest in CONFIG_PSI there are a number of
> tools on github that monitor memory - it should be possible to come up
> with some tool that alerts emacs of memory surges while keeping some
> history.

I found test case for this bug and I sent mail to 43395@debbugs.gnu.org,
and qmail told me that the mail was accepted:
delivery 1: success:
209.51.188.43_accepted_message./Remote_host_said:_250_OK_id=1kc8Bf-00061T-3u/
But the bugreport didn't show up on gnu.emacs.bug.

Here is the test case:

#+BEGIN_SRC
$ cat > f.c
#include <stdio.h>
int
main()
{
  char c = ' ';
  while (c != 'q' && c != 'Q')
    {
      fprintf(stdout, "Press q then enter to quit: ");
      c = fgetc(stdin);
    }
  return 0;
}
^D

$ gcc f.c
$ emacs -Q
#+END_SRC

M-x shell-command ./a.out

Then the process hangs. But Emacs' memory grows unbounded.

WARNING. Be careful to interrupt it with ^G before the OOM killer
kicks in.  If you have swap you may lose control of your machine
indefinitely.

After you interrupt the sub process, Emacs is left with unreclaimed
gigabytes of RSS

Please let me know if you can reproduce this




^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: memory leaks
@ 2020-11-10  1:24 Madhu
  2020-11-10 15:16 ` Eli Zaretskii
  0 siblings, 1 reply; 44+ messages in thread
From: Madhu @ 2020-11-10  1:24 UTC (permalink / raw)
  To: help-gnu-emacs; +Cc: 43395

[Test case follows. Sorry Drew for trying to post to help-gnu and
debbugs simultaneously, but this is my third attempt at sending this
test case - I've tried sending it to debbugs.gnu.org and to
gmane.emacs.help newsgroup - and my messages have been dropped]


* Madhu <m35z8gise6.fsf@leonis4.robolove.meer.net> :
Wrote on Mon, 14 Sep 2020 15:36:57 +0530:
> The numbers I reported by garbage-collect do not account for the memory
> usage. FWIW I've posted that info again at
> https://debbugs.gnu.org/cgi/bugreport.cgi?bug=43395

I found test case for this bug and I sent mail to 43395@debbugs.gnu.org,
and qmail told me that the mail was accepted:
delivery 1: success:
209.51.188.43_accepted_message./Remote_host_said:_250_OK_id=1kc8Bf-00061T-3u/
But the bugreport didn't show up on gnu.emacs.bug.

Here is the test case:

#+BEGIN_SRC
$ cat > f.c
#include <stdio.h>
int
main()
{
  char c = ' ';
  while (c != 'q' && c != 'Q')
    {
      fprintf(stdout, "Press q then enter to quit: ");
      c = fgetc(stdin);
    }
  return 0;
}
^D

$ gcc f.c
$ emacs -Q
#+END_SRC

M-x shell-command ./a.out

Then the process hangs. But Emacs' memory grows unbounded.

WARNING. Be careful to interrupt it with ^G before the OOM killer
kicks in.  If you have swap you may lose control of your machine
indefinitely.

After you interrupt the sub process, Emacs is left with unreclaimed
gigabytes of RSS

Please let me know if you can reproduce this



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: memory leaks
  2020-11-10  1:24 memory leaks Madhu
@ 2020-11-10 15:16 ` Eli Zaretskii
  0 siblings, 0 replies; 44+ messages in thread
From: Eli Zaretskii @ 2020-11-10 15:16 UTC (permalink / raw)
  To: help-gnu-emacs

> From: Madhu <enometh@meer.net>
> Date: Tue, 10 Nov 2020 06:54:56 +0530
> Cc: 43395@debbugs.gnu.org
> 
> #+BEGIN_SRC
> $ cat > f.c
> #include <stdio.h>
> int
> main()
> {
>   char c = ' ';
>   while (c != 'q' && c != 'Q')
>     {
>       fprintf(stdout, "Press q then enter to quit: ");
>       c = fgetc(stdin);
>     }
>   return 0;
> }
> ^D
> 
> $ gcc f.c
> $ emacs -Q
> #+END_SRC
> 
> M-x shell-command ./a.out
> 
> Then the process hangs. But Emacs' memory grows unbounded.

Short answer: you use a command that cannot handle this case.  For the
details, please refer to the bug tracker.



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: memory leaks
  2020-09-13 14:14                     ` Eli Zaretskii
@ 2021-01-21  9:28                       ` Madhu
  0 siblings, 0 replies; 44+ messages in thread
From: Madhu @ 2021-01-21  9:28 UTC (permalink / raw)
  To: help-gnu-emacs

| Your bug report #43389: 28.0.50; memory leak which was filed against the emacs package, has been closed.

Kudos!

Thanks Trevor and everyone else for tracking this down.  Your hard work
is much appreciated.

The debbugs report #43399 rendered under eww runs to over 100,800 words,
much longer than your average murder mystery; where the clue to the
culprit isn't given till near end.  It is a great relief to see that
justice is finally done and ones faith in humanity is restored.



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: memory leaks
  2020-11-09 17:50                         ` Madhu
@ 2022-03-04 11:32                           ` Eli Zaretskii
  2022-03-06 10:59                             ` Madhu
  0 siblings, 1 reply; 44+ messages in thread
From: Eli Zaretskii @ 2022-03-04 11:32 UTC (permalink / raw)
  To: help-gnu-emacs

> From: Madhu <enometh@meer.net>
> Date: Mon, 09 Nov 2020 23:20:55 +0530
> 
> I found test case for this bug and I sent mail to 43395@debbugs.gnu.org,
> and qmail told me that the mail was accepted:
> delivery 1: success:
> 209.51.188.43_accepted_message./Remote_host_said:_250_OK_id=1kc8Bf-00061T-3u/
> But the bugreport didn't show up on gnu.emacs.bug.

That bug is archived, so any messages to it are discarded.  You need
to unarchive it first (see admin/notes/bugtracker for the details).

> Here is the test case:
> 
> #+BEGIN_SRC
> $ cat > f.c
> #include <stdio.h>
> int
> main()
> {
>   char c = ' ';
>   while (c != 'q' && c != 'Q')
>     {
>       fprintf(stdout, "Press q then enter to quit: ");
>       c = fgetc(stdin);
>     }
>   return 0;
> }
> ^D
> 
> $ gcc f.c
> $ emacs -Q
> #+END_SRC
> 
> M-x shell-command ./a.out
> 
> Then the process hangs. But Emacs' memory grows unbounded.
> 
> WARNING. Be careful to interrupt it with ^G before the OOM killer
> kicks in.  If you have swap you may lose control of your machine
> indefinitely.
> 
> After you interrupt the sub process, Emacs is left with unreclaimed
> gigabytes of RSS
> 
> Please let me know if you can reproduce this

This was already discussed in that bug, and you said back then that
when the shell buffer is killed, the memory is freed up.  So how come
you now say this is still a bug, and what is the difference between
the case discussed in that bug and what you describe now?



^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: memory leaks
  2022-03-04 11:32                           ` Eli Zaretskii
@ 2022-03-06 10:59                             ` Madhu
  2022-03-06 11:15                               ` Eli Zaretskii
  0 siblings, 1 reply; 44+ messages in thread
From: Madhu @ 2022-03-06 10:59 UTC (permalink / raw)
  To: help-gnu-emacs

* Eli Zaretskii <83ee3ihs17.fsf@gnu.org> :
Wrote on Fri, 04 Mar 2022 13:32:36 +0200:
> This was already discussed in that bug, and you said back then that
> when the shell buffer is killed, the memory is freed up.  So how come
> you now say this is still a bug, and what is the difference between
> the case discussed in that bug and what you describe now?

That message was from nov 2020. It is a duplicate

I onky authorized gmane to send my message this week to emacs-help,
looks like I had a bunch of messages posted through gmane over the years
which were not posted by gmane because i was not authorized, which have
now been delivered, but which were kept in hold. I think in most cases i
posted the messages outside of gmane.

sorry for the noise

I've not seen the memory "leaks" recently. Maybe I stopped using the
packages that triggered them





^ permalink raw reply	[flat|nested] 44+ messages in thread

* Re: memory leaks
  2022-03-06 10:59                             ` Madhu
@ 2022-03-06 11:15                               ` Eli Zaretskii
  0 siblings, 0 replies; 44+ messages in thread
From: Eli Zaretskii @ 2022-03-06 11:15 UTC (permalink / raw)
  To: help-gnu-emacs

> From: Madhu <enometh@meer.net>
> Date: Sun, 06 Mar 2022 16:29:41 +0530
> 
> * Eli Zaretskii <83ee3ihs17.fsf@gnu.org> :
> Wrote on Fri, 04 Mar 2022 13:32:36 +0200:
> > This was already discussed in that bug, and you said back then that
> > when the shell buffer is killed, the memory is freed up.  So how come
> > you now say this is still a bug, and what is the difference between
> > the case discussed in that bug and what you describe now?
> 
> That message was from nov 2020. It is a duplicate
> 
> I onky authorized gmane to send my message this week to emacs-help,
> looks like I had a bunch of messages posted through gmane over the years
> which were not posted by gmane because i was not authorized, which have
> now been delivered, but which were kept in hold. I think in most cases i
> posted the messages outside of gmane.
> 
> sorry for the noise
> 
> I've not seen the memory "leaks" recently. Maybe I stopped using the
> packages that triggered them

OK, thanks.  And sorry for not noticing the old date.



^ permalink raw reply	[flat|nested] 44+ messages in thread

end of thread, other threads:[~2022-03-06 11:15 UTC | newest]

Thread overview: 44+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-03-03 17:13 Memory leaks Uday S Reddy
2011-03-03 17:55 ` Andreas Schwab
2011-03-03 18:00   ` Uday S Reddy
2011-03-03 23:40     ` Andreas Schwab
2011-03-04 11:39       ` Uday S Reddy
2011-03-04 12:19         ` Eli Zaretskii
2011-03-04 12:59           ` Uday S Reddy
2011-03-07 19:19         ` Uday S Reddy
2011-03-07 20:33           ` Andreas Schwab
2011-03-07 22:27             ` David Kastrup
2011-03-07 22:49               ` David Kastrup
2011-03-09  0:39               ` Richard Stallman
2011-03-07 23:01             ` Uday S Reddy
2011-03-08  2:35               ` Stefan Monnier
2011-03-08  8:57                 ` Andreas Schwab
2011-03-09  0:40                   ` Richard Stallman
2011-03-09  6:07                     ` David Kastrup
  -- strict thread matches above, loose matches on Subject: below --
2020-11-10  1:24 memory leaks Madhu
2020-11-10 15:16 ` Eli Zaretskii
2019-09-20  7:23 Madhu
2019-09-20  8:00 ` Jean-Christophe Helary
2019-09-20  8:11 ` Eli Zaretskii
     [not found]   ` <mailman.572.1568967069.2190.help-gnu-emacs@gnu.org>
2019-09-20  8:31     ` Madhu
2019-09-20  9:21       ` Eli Zaretskii
     [not found]         ` <mailman.578.1568971399.2190.help-gnu-emacs@gnu.org>
2020-09-12 13:02           ` Madhu
2020-09-12 13:39             ` Eli Zaretskii
2020-09-12 13:55               ` Michael Heerdegen
2020-09-12 14:09                 ` Eli Zaretskii
2020-09-12 19:14               ` Igor Sosa Mayor
2020-09-12 19:26                 ` Eli Zaretskii
2020-09-12 19:28                   ` Igor Sosa Mayor
2020-09-13  2:30                     ` Eli Zaretskii
2020-09-13  3:17                   ` Madhu
2020-09-13 14:14                     ` Eli Zaretskii
2021-01-21  9:28                       ` Madhu
2020-09-13 20:14                     ` Stefan Monnier
2020-09-14 10:06                       ` Madhu
2020-11-09 17:50                         ` Madhu
2022-03-04 11:32                           ` Eli Zaretskii
2022-03-06 10:59                             ` Madhu
2022-03-06 11:15                               ` Eli Zaretskii
2009-08-05 17:17 Memory leaks Daniel Clemente
2009-08-08 18:57 ` Chong Yidong
2009-08-10  8:08   ` Daniel Clemente

Code repositories for project(s) associated with this external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.