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

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

 



Please stop top-posting.  It makes it very hard to reply to you.

On 10/21/2010 09:01 PM, Alexey Skidanov wrote:
> Actually, you claim that if some static library defines some global variable, 
> then it should NOT be linked with more then one shared library.

In the same process, yes.  That's absolutely true.

> 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? 

I don't know what you mean by a "MULTIPLE variable initialization".

Andrew.


> 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