qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] Why not use exit() instead of abort()?


From: Dan Shearer
Subject: Re: [Qemu-devel] Why not use exit() instead of abort()?
Date: Mon, 6 Aug 2007 07:21:21 +0930
User-agent: Mutt

On Sun, Aug 05, 2007 at 11:13:55PM +0200, Bernhard Kauer wrote:
> There are a couple of places in qemu, where abort() is called.
> The most commonly used one is perhaps cpu_abort() which is called
> e.g. when a triple fault occures.
> 
> As abort() does not call any atexit() function, cleanup is not
> performed. 

Tiny correction: abort() and _exit don't call atexit(), however
unix-like OSs still cleanup memory and file descriptors and other
transient resources  anyway no matter how the program ended. So lack of
cleanup isn't quite as big an issue as it might seem.

> This leaves for example the terminal in a state where
> the cursor is invisible.

Non-transient resources such as DSOs and domain sockets are not cleaned
up by the OS, which accounts for the terminal problem you noticed.

> Are there any reasons not to use exit(1) in cpu_abort()?

Speed. I used to use abort() or _exit() for speed, ie they didn't hang
around while atexit() waited politely for timeouts. I thought if I told
the program to stop it should stop immediately :-)

Then I had all sorts of problems to do with persistent shared resources
hanging around in strange states so I moved to exit(1).

I think (can someone correct me here?) there is another reason to call
atexit() for portable programs, and that is that Microsoft OSs aren't as
fussy about cleaning up after a program has exited.

-- 
Dan Shearer
address@hidden




reply via email to

[Prev in Thread] Current Thread [Next in Thread]