[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] Why not use exit() instead of abort()?
From: |
Bernhard Kauer |
Subject: |
Re: [Qemu-devel] Why not use exit() instead of abort()? |
Date: |
Fri, 17 Aug 2007 18:45:52 +0200 |
User-agent: |
Mutt/1.5.16 (2007-06-11) |
On Mon, Aug 06, 2007 at 07:21:21AM +0930, Dan Shearer wrote:
> 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.
Well, the problem is here that the function term_exit() is never
called, which would restore the terminal state to the old version
via a tcsetattr().
> > 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 :-)
I would use a 'kill -TERM' for that.
Bernhard