comp.lang.ada
 help / color / mirror / Atom feed
From: Robert A Duff <bobduff@shell01.TheWorld.com>
Subject: Re: stupid question: how can I finish a program?
Date: Wed, 28 Aug 2002 22:22:56 GMT
Date: 2002-08-28T22:22:56+00:00	[thread overview]
Message-ID: <wccu1letygv.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: 3D6D00B9.60EECCFB@san.rr.com

Darren New <dnew@san.rr.com> writes:

> Robert A Duff wrote:
> > If you're running under a proper operating system, then all resources
> > visible outside the program will be cleaned up when the program exits.
> 
> This is true only in the most trivial sense. If I have a program that
> contacts a license manager (for example) and grabs the license, then aborts,
> I could be in trouble. That's why license managers check for that sort of
> failure.

So if it's checked for, what's the problem?

My point is that any process can be killed at any point.  The process
could execute an illegal instruction (Ada allows calls to machine code,
for example, and allows Unchecked_Conversion to pointers).  Or (in
Unix), you can "kill -9" it.  The OS has to recover from those nasties
without leaking resources.  So surely calling "exit" is no worse.

>... If I create a lock-file, that lock-file doesn't get cleaned up
> (under UNIX, for example). 

That's why I said, "So you can't blithely call "exit" without some global
knowledge of how finalization is used in your program."

A program that acquires lock files ought to be robust.  For example,
check whether a previous dead version of itself created the lock file.

> Other OSes (like Amiga's OS) specifically don't clean up anything at all, as
> this lets you do things like allocate memory, load a program into it, and
> start it up and then exit yourself. You have to clean it up for yourself.

I don't know Amiga, but it seems to me that if a crashed program causes
memory leaks, the OS is broken.

> Some mainframe OSes leave the clean-up to the shell. It's the shell's
> responsibility to free the memory and close the files. However, I'd expect
> that one would count the shell as "part of the OS" in these systems.

And one thing Unix does right is to make shells *not* part of the OS.

> So no, in general, a "proper" operating system doesn't clean up all visible
> resources. Not even with exit() calls. :-)

I guess it depends on what "proper" OS means.  I'm assuming hardware
memory protection, and an OS that takes advantage of that to reclaim
resources from crashed processes.

- Bob



  parent reply	other threads:[~2002-08-28 22:22 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <c923f575.0208130627.479e0b3d@posting.google.com>
2002-08-13 14:37 ` stupid question: how can I finish a program? chris.danx
2002-08-13 23:53   ` Robert C. Leif
2002-08-14  2:07     ` Wes Groleau
2002-08-14  5:53       ` Robert C. Leif
2002-08-14 13:30         ` Wes Groleau
2002-08-14 13:56       ` Marin D. Condic
2002-08-17 15:58         ` Robert Dewar
2002-08-14 19:18       ` Simon Wright
2002-08-15 14:02         ` Wes Groleau
2002-08-15  1:47       ` Robert Dewar
2002-08-15  5:14         ` Michael Bode
2002-08-17 14:28           ` Alfred Hilscher
2002-08-15  5:17         ` tmoran
2002-08-15 18:41           ` Robert Dewar
2002-08-14 13:53     ` Marin D. Condic
2002-08-15 17:39       ` tmoran
2002-08-16 13:46         ` Marin D. Condic
2002-08-17 14:26           ` Warren W. Gay VE3WWG
2002-08-22 19:16           ` tmoran
2002-08-22 20:54             ` Marin D. Condic
2002-08-25  2:22       ` Robert Dewar
2002-08-26 15:59         ` Marin D. Condic
2002-08-27 21:59         ` Robert A Duff
2002-08-28 20:40           ` Dmitry A.Kazakov
2002-08-28 13:59             ` Robert A Duff
2002-08-28 16:55               ` Darren New
2002-08-28 18:36                 ` Larry Kilgallen
2002-08-28 22:22                 ` Robert A Duff [this message]
2002-08-28 22:30                   ` Darren New
2002-08-28 23:16                     ` Robert A Duff
2002-08-29 16:49                       ` Warren W. Gay VE3WWG
2002-08-29 18:55                         ` Larry Kilgallen
2002-08-29 19:17                           ` Warren W. Gay VE3WWG
2002-08-30  8:09                         ` Ole-Hjalmar Kristensen
2002-08-31 20:39                           ` Warren W. Gay VE3WWG
2002-08-29 16:35                   ` Dennis Lee Bieber
2002-08-29 22:48               ` Dmitry A.Kazakov
2002-08-29 15:18                 ` Robert A Duff
2002-08-30  4:29                   ` Dmitry A.Kazakov
2002-08-29 16:53                     ` Warren W. Gay VE3WWG
2002-08-29 19:03                     ` Robert C. Leif
2002-08-29 19:25                       ` Warren W. Gay VE3WWG
2002-08-29 20:42                       ` Larry Kilgallen
2002-08-29 20:22                         ` Robert A Duff
2002-08-30 20:59                           ` Simon Wright
2002-08-28 14:33             ` Marin D. Condic
2002-08-28 22:15               ` Larry Kilgallen
2002-08-29 15:30                 ` Robert A Duff
2002-08-29 22:16               ` Dmitry A.Kazakov
2002-08-29 13:17                 ` Marin D. Condic
2002-08-29 19:32                   ` Robert A Duff
2002-08-31  2:40                   ` Dmitry A.Kazakov
2002-08-31  0:10                     ` Toshitaka Kumano
2002-09-02 21:02                       ` Dmitry A.Kazakov
2002-08-29 16:59                 ` Warren W. Gay VE3WWG
2002-08-29 18:26                   ` Marin D. Condic
2002-08-13 14:38 ` David C. Hoos
2002-08-13 20:08   ` Adam Beneschan
2002-08-14  6:41 ` Emil Moholth
2002-08-14 14:00   ` Marin D. Condic
2002-08-14  7:37 ` Martin Dowie
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox