Re: Global variable in static library - double free or corruption error

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

 



Actually, you claim that if some static library defines some global variable, 
then it should NOT be linked with more then one shared library. That is, if you 
have the dependencies tree like in my example then you have a problem. Think 
about such static library is third party library where I can't change the code.

Regarding the ODR. You are absolutly right. But what about a MULTIPLE variable 
initialization. Is it correct behaviour according to standard? 

Alexey
________________________________
From: Andrew Haley <aph@xxxxxxxxxx>
To: noloader@xxxxxxxxx
Cc: Alexey Skidanov <Alexey.Skidanov@xxxxxxxxxxxx>; gcc-help@xxxxxxxxxxx; 
skidanovalexey@xxxxxxxxx
Sent: Thu, October 21, 2010 7:37:25 PM
Subject: Re: Global variable in static library - double free or corruption error

On 10/21/2010 05:23 PM, Jeffrey Walton wrote:
>> that there can only ever be one definition of a symbol in a program, and
>> UNIX has always merged multiple definitions to achieve this
> Does the rule include that gloabl object destructors are to run on
> every unload, or the last/final unload or last call to dlclose (when
> the shared object gets unmapped)?

I suspect that Bad Things would happen.  :-)

As far as I know, they are run, and if you have two definitions
of some object with a destructor, then you violate the ODR rule,
and it's all your fault!

> Many folks don't expect their
> objects will be pulled out from under them until the last unload. It
> seems like a reasonable expectation to me.

Sure, but you break the rules, you get to keep all the pieces.

Andrew.







[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux