Could you explain the last phrase. Do you mean, once I break the ODR the behaviour is unexpected? ----- Original Message ---- From: Andrew Haley <aph@xxxxxxxxxx> To: noloader@xxxxxxxxx Cc: Alexey Skidanov <skidanovalexey@xxxxxxxxx>; Alexey Skidanov <Alexey.Skidanov@xxxxxxxxxxxx>; gcc-help@xxxxxxxxxxx Sent: Fri, October 22, 2010 3:02:13 PM Subject: Re: Global variable in static library - double free or corruption error On 10/22/2010 01:22 PM, Jeffrey Walton wrote: > On Fri, Oct 22, 2010 at 4:32 AM, Andrew Haley <aph@xxxxxxxxxx> wrote: >> 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". > I believe he means the constructor running multiple times (the > antithesis of the destructor running multiple times). I see, thanks. Well, unless there's a bug you can't get that unless you break the ODR. Andrew.