[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#43395: memory leaks
From: |
Jean Louis |
Subject: |
bug#43395: memory leaks |
Date: |
Tue, 10 Nov 2020 22:40:23 +0300 |
User-agent: |
Mutt/2.0 (3d08634) (2020-11-07) |
* Eli Zaretskii <eliz@gnu.org> [2020-11-10 18:28]:
> > > M-x shell-command ./a.out
> > >
> > > Then the process hangs. But Emacs' memory grows unbounded.
>
> This is expected, and is not a bug.
>
> 'shell-command' is intended for running non-interactive programs,
> those which produce output, but don't expect any input. So it runs
> the sub-process with its standard input connected to the null device.
> Your program has a bug in that case: it doesn't detect the EOF
> condition on its standard input (to see that, invoke it as
> "./a.out < /dev/null"). So it loops indefinitely, with each iteration
> pumping the prompts into Emacs, which obediently collects that in a
> buffer, that grows and grows and grows, until it eats up all the
> available memory. And evidently, you didn't configure your system to
> have resident size limitation on user processes, so instead of
> reporting "memory full", Emacs is allowed to eat up all your memory
> and swap.
Thank you, it helps!
Do I need to use `ulimit -m'?
I guess following should be for 1 GiB:
ulimit -m 1048576
and this for 2 GiB:
ulimit -m 2097152
Now I can execute ./a.out without getting blocked in Emacs. I will see
how to tweak that more.