Re: Compiling C++ modules

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

 



On Thu, Apr 27, 2006 at 06:10:07PM +0300, Denis Vlasenko wrote:
> On Tuesday 25 April 2006 20:53, Avi Kivity wrote:
> > Very often one needs to acquire a resource, do something with it, and 
> > then free the resource. Here, "resource" can mean a file descriptor, a 
> > reference into a reference counted object, or, in our case, a spinlock. 
> > And we want "free" to mean "free no matter what", e.g. on a normal path 
> > or an exception path.
> 
> ...
> 
> > Additionally, C++ guarantees that if an exception is thrown after 
> > spin_lock() is called, then the spin_unlock() will also be called. 
> > That's an interesting mechanism by itself.
> 
> Life gets even more interesting when you hit another exception
> inside destructor(s) being executed due to first one.
> Say, spin_unlock() discovers that lock is already unlocked
> and does "throw BUG_double_unlock".
> 
> Even if you
> (a) remember what standard says about it
> (b) implemented nested exception handling correctly,
> 	then you are still left with
> (c) let's pray gcc has no bugs in stack unwinding
>     and nested exceptions and nested destructor calls.
> 
> Mozilla crashes over such things. For Mozilla, crash is not
> *that* catastrophic. For OS kernel, it is.

Mozilla is written in C++ ? I start to better understand where the
160 MB bloat comes from...

> vda

Cheers,
Willy

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux