From: Michael Rowley <rowley@intermetrics.com>
Subject: Re: What task storage_size to use?
Date: 1997/11/24
Date: 1997-11-24T00:00:00+00:00 [thread overview]
Message-ID: <3479C8CF.9F2FEA18@intermetrics.com> (raw)
In-Reply-To: mheaney-ya023680002311971911160001@news.ni.net
Matthew Heaney wrote:
>
> In article <34785EC5.740B76B0@intermetrics.com>, Michael Rowley
> <rowley@intermetrics.com> wrote:
>
> >Another approach that I am thinking of using is to create my own
> >Storage_Pool for the task access type, which would allocate one more
> >page than necessary for the task and write protect the extra page. Then
> >if there is a page fault on that page I would know that I am within one
> >page of running out of stack space, and then try to recover gracefully.
>
> I don't get it. Why don't you just catch Storage_Error?
Two reasons. First, at least as of Gnat3.07 or so (I haven't checked
recently) overflowing the stack didn't generate a storage error.
Apparently, according to Robert Dewar, that is now fixed.
Second. It would be very difficult for me to clean up after a storage
error that could have happened at almost any place in my program. There
are certain places in my program where I would like to be able to ask:
am I almost out of stack space? If I did the memory protection scheme
that I mentioned above, I would NOT generate an exception. Instead, I
would unprotect the page and then set a global variable, which would be
checked before the stack got much deeper. That variable would signify
that I better stop growing the stack now.
Michael Rowley
rowley@inmet.com
next prev parent reply other threads:[~1997-11-24 0:00 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <3472A748.213DF2CA@intermetrics.com>
[not found] ` <3.0.1.32.19971121191820.00b96cf0@spectre.mitre.org>
1997-11-23 0:00 ` What task storage_size to use? Michael Rowley
1997-11-23 0:00 ` Matthew Heaney
1997-11-24 0:00 ` Michael Rowley [this message]
1997-11-24 0:00 ` Robert Dewar
1997-11-24 0:00 ` Robert Dewar
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox