From: Helge Hafting <helgehaf@idb.hist.no>
To: Alan Cox <alan@lxorguk.ukuu.org.uk>, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] Prevent OOM from killing init
Date: Tue, 27 Mar 2001 09:58:08 +0200 [thread overview]
Message-ID: <3AC04810.223A829E@idb.hist.no> (raw)
In-Reply-To: <E14gEkJ-0003aF-00@the-village.bc.nu>
Alan Cox wrote:
>
> > >How do you return an out of memory error to a C program that is out of memory
> > >due to a stack growth fault. There is actually not a language construct for it
> > SIGSEGV.
> > Stack overflow for a language like C using standard implementation techniques
> > is the same as a page fault while accessing a page for which there is no backing
> > store. SIGSEGV is the logical choice, and the one I'd expect on other Unices.
>
> Guess again. You are expanding the stack because you have no room left on it.
> You take a fault. You want to report a SIGSEGV. Now where are you
> going to put the stack frame ?
>
> SIGSEGV in combination with a preallocated alternate stack maybe, but then you
> still need to recover. C++ you can maybe do it with exception handling but
> C doesnt really have the structure and longjmp just doesnt cut it.
Seems to me a guard page would do the trick. Make the last page of the
stack
non-overcommitable and marked not present. Maybe non-swappable too in
case
nothing else can be swapped out for some reason.
(Yes, that wastes a page per process)
Whenever we hit the guard page, try expanding the stack.
If it works - fine. If not - make the guard page present _and_ deliver
the SIGSEGV using this last page of stack. No complicated alternate
stack construct, just report OOM one page in advance.
OOM is still possible if the program don't handle SIGSEGV well.
But a smart program now have the option of doing emergency deallocations
and/or dump its precious intermediate results to file.
Helge Hafting
next prev parent reply other threads:[~2001-03-27 7:59 UTC|newest]
Thread overview: 153+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-03-22 23:35 [PATCH] Prevent OOM from killing init Mikael Pettersson
2001-03-22 23:43 ` Alan Cox
2001-03-27 7:58 ` Helge Hafting [this message]
[not found] <Pine.LNX.4.30.0103251549100.13864-100000@fs131-224.f-secure.com>
[not found] ` <l03130315b6e242006a4b@[192.168.239.101]>
2001-03-25 15:47 ` Jonathan Morton
-- strict thread matches above, loose matches on Subject: below --
2001-03-24 23:41 Benoit Garnier
2001-03-25 5:45 ` Stephen Satchell
2001-03-25 6:58 ` Stephen Clouse
2001-03-25 14:37 ` Martin Dalecki
2001-03-25 14:32 ` Martin Dalecki
2001-03-24 10:18 Andries.Brouwer
2001-03-24 2:30 Andreas Franck
2001-03-24 1:38 Jonathan Morton
2001-03-24 1:11 Andries.Brouwer
2001-03-23 23:15 Andries.Brouwer
2001-03-23 23:17 ` Martin Dalecki
2001-03-24 0:13 ` Jonathan Morton
2001-03-24 6:58 ` Rik van Riel
2001-03-24 12:38 ` Jonathan Morton
2001-03-24 13:12 ` Jonathan Morton
2001-03-24 1:59 ` Paul Jakma
2001-03-23 19:33 Stephen Satchell
2001-03-23 18:29 Andries.Brouwer
2001-03-23 18:38 ` Alan Cox
2001-03-24 0:46 ` Tim Wright
2001-03-24 16:48 ` Jesse Pollard
2001-03-25 16:12 ` Szabolcs Szakacsits
2001-03-25 16:39 ` Jonathan Morton
2001-03-23 18:43 ` nick
2001-03-23 19:01 ` Martin Dalecki
2001-03-23 19:23 ` nick
2001-03-23 22:12 ` Alan Cox
2001-03-23 23:23 ` Stephen E. Clark
2001-03-24 10:40 ` Gérard Roudier
2001-03-23 21:14 ` Jonathan Morton
2001-03-25 14:56 ` Marco Colombo
2001-03-23 9:48 Only 10 MB/sec with via 82c686b - FIXED Alan Cox
2001-03-23 17:00 ` [PATCH] Prevent OOM from killing init SodaPop
2001-03-23 18:42 ` Martin Dalecki
2001-03-23 20:25 ` SodaPop
2001-03-23 20:33 ` Martin Dalecki
2001-03-23 19:19 ` Jonathan Morton
2001-03-23 9:28 Heusden, Folkert van
2001-03-23 0:09 Mikael Pettersson
2001-03-23 0:27 ` Andrew Morton
2001-03-23 12:29 ` Mikael Pettersson
2001-03-23 16:24 ` Horst von Brand
2001-03-23 16:49 ` Guest section DW
2001-03-23 17:04 ` Alan Cox
[not found] <4605B269DB001E4299157DD1569079D2809930@EXCHANGE03.plaza.ds.adp.com>
2001-03-22 16:29 ` Rik van Riel
2001-03-22 18:32 ` Christian Bodmer
2001-03-23 15:08 ` Horst von Brand
2001-03-24 7:48 ` Doug Ledford
2001-03-24 10:21 ` Mike Galbraith
2001-03-24 18:19 ` Doug Ledford
2001-03-24 22:47 ` Mike Galbraith
2001-03-24 23:35 ` Jonathan Morton
2001-03-25 18:35 ` Jonathan Morton
2001-03-26 4:40 ` Horst von Brand
2001-03-26 8:36 ` Mike Galbraith
2001-03-26 10:01 ` Jonathan Morton
2001-03-26 14:48 ` Rik van Riel
2001-03-25 19:07 ` Mike Galbraith
2001-03-24 20:04 ` Jonathan Morton
2001-03-24 20:59 ` Jonathan Morton
2001-03-24 22:11 ` Rik van Riel
2001-03-24 23:36 ` Jonathan Morton
2001-03-25 14:30 ` Martin Dalecki
2001-03-25 14:13 ` Martin Dalecki
2001-03-24 12:42 ` Jonathan Morton
2001-03-24 15:06 ` Mike Galbraith
2001-03-25 14:10 ` Martin Dalecki
2001-03-22 11:08 Heusden, Folkert van
2001-03-21 23:41 Leif Sawyer
2001-03-22 0:32 ` Kevin Buhr
2001-03-21 22:54 Patrick O'Rourke
2001-03-21 23:11 ` Eli Carter
2001-03-21 23:40 ` Patrick O'Rourke
2001-03-21 23:48 ` Rik van Riel
2001-03-22 8:14 ` Eric W. Biederman
2001-03-22 9:24 ` Rik van Riel
2001-03-22 19:29 ` Philipp Rumpf
2001-03-22 11:47 ` Guest section DW
2001-03-22 15:01 ` Rik van Riel
2001-03-22 19:04 ` Guest section DW
2001-03-22 16:41 ` Eric W. Biederman
2001-03-22 20:28 ` Stephen Clouse
2001-03-22 21:01 ` Ingo Oeser
2001-03-22 21:23 ` Alan Cox
2001-03-22 22:00 ` Guest section DW
2001-03-22 22:12 ` Ed Tomlinson
2001-03-22 22:52 ` Alan Cox
2001-03-22 23:27 ` Guest section DW
2001-03-22 23:37 ` Rik van Riel
2001-03-26 19:04 ` James Antill
2001-03-26 20:05 ` Rik van Riel
2001-03-22 23:40 ` Alan Cox
2001-03-23 20:09 ` Szabolcs Szakacsits
2001-03-23 22:21 ` Alan Cox
2001-03-23 22:37 ` Szabolcs Szakacsits
2001-03-23 19:57 ` Szabolcs Szakacsits
2001-03-22 22:10 ` Doug Ledford
2001-03-22 22:53 ` Alan Cox
2001-03-22 23:30 ` Doug Ledford
2001-03-22 23:40 ` Alan Cox
2001-03-22 23:43 ` Stephen Clouse
2001-03-23 19:26 ` Szabolcs Szakacsits
2001-03-23 20:41 ` Paul Jakma
2001-03-23 21:58 ` george anzinger
2001-03-24 5:55 ` Rik van Riel
2001-03-23 22:18 ` Szabolcs Szakacsits
2001-03-24 2:08 ` Paul Jakma
2001-03-23 1:31 ` Michael Peddemors
2001-03-23 7:04 ` Rik van Riel
2001-03-23 11:28 ` Guest section DW
2001-03-23 14:50 ` Eric W. Biederman
2001-03-23 17:21 ` Guest section DW
2001-03-23 20:18 ` Paul Jakma
2001-03-24 20:19 ` Jesse Pollard
2001-03-23 23:48 ` Eric W. Biederman
2001-03-23 21:11 ` José Luis Domingo López
2001-03-27 15:05 ` Anthony de Boer - USEnet
2002-03-23 0:33 ` Martin Dalecki
2001-03-22 23:53 ` Rik van Riel
2002-03-23 1:21 ` Martin Dalecki
2001-03-23 0:20 ` Stephen Clouse
2002-03-23 1:30 ` Martin Dalecki
2001-03-23 1:37 ` Rik van Riel
2001-03-23 10:48 ` Martin Dalecki
2001-03-23 14:56 ` Rik van Riel
2001-03-23 16:43 ` Guest section DW
2001-03-24 5:57 ` Rik van Riel
2001-03-25 16:35 ` Guest section DW
2001-03-23 20:20 ` Tom Diehl
2001-03-23 23:56 ` Tim Wright
2001-03-24 0:21 ` Tom Diehl
2001-03-23 17:26 ` James A. Sutherland
2001-03-23 17:32 ` Alan Cox
2001-03-23 18:58 ` Martin Dalecki
2001-03-23 19:45 ` Jonathan Morton
2001-03-23 23:26 ` Eric W. Biederman
2001-03-25 15:30 ` Martin Dalecki
2001-03-25 20:47 ` Stephen Satchell
2001-03-24 0:03 ` Guest section DW
2001-03-24 7:52 ` Doug Ledford
2001-03-25 0:32 ` Kurt Garloff
2001-03-25 15:02 ` Sandy Harris
2001-03-25 18:07 ` Guest section DW
2001-03-22 14:53 ` Patrick O'Rourke
2001-03-22 19:24 ` Philipp Rumpf
2001-03-22 22:20 ` James A. Sutherland
2001-03-23 17:31 ` Szabolcs Szakacsits
2001-03-24 5:54 ` Rik van Riel
2001-03-24 6:55 ` Juha Saarinen
2001-03-27 8:31 ` Roger Gammans
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3AC04810.223A829E@idb.hist.no \
--to=helgehaf@idb.hist.no \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=linux-kernel@vger.kernel.org \
/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.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox