Making alloca more safe

Sean Kelly sean at invisibleduck.org
Tue Nov 17 11:29:06 PST 2009


Andrei Alexandrescu Wrote:

> Sean Kelly wrote:
> > Tomas Lindquist Olsen Wrote:
> > 
> >> On Tue, Nov 17, 2009 at 11:51 AM, Walter Bright
> >> <newshound1 at digitalmars.com> wrote:
> >>> I suppose nobody much cares if it writes out a corrupted audio file. People
> >>> care very much if their airplane suddenly dives into the ground.
> >>>
> >>> Be that as it may, it is certainly possible to catch seg faults in an
> >>> exception handler and write files out. That would be an unacceptable
> >>> behavior, though, in a system that needs to be safe.
> >>>
> >> You spent quite a bit of effort explaining that segfaults never cause
> >> memory corruption, so it seems fairly reasonable to assume that some
> >> parts of the application state could still be valid and useful not to
> >> throw away.
> > 
> > At the moment the segfault occurs, sure.  But if the process eats the segfault and continues, what happens?  If an app is programmed in such a way that segfaults are a part of normal processing (I worked on a DB that performed dynamic loading this way) that's one thing.  But other apps are almost definitely going to try and write data near 0x00 after such an occurrence.
> 
> I think throwing an Error object instead of failing immediately would be 
> occasionally useful. (Same goes about other trapped errors such as 
> integral division by zero.) There are applications out there that want 
> to partially recover from a null pointer error. I wrote a few, so it's 
> difficult to convince me they don't exist.

I'd love to!  And this is how Windows works.  But throwing an exception from a signal handler invokes undefined behavior.  Last time I googled this I saw as many accounts of it failing horribly as working.



More information about the Digitalmars-d mailing list