[squid-dev] [PATCH] Broken trunk rev14778

Alex Rousskov rousskov at measurement-factory.com
Mon Aug 8 20:08:38 UTC 2016


On 08/08/2016 01:19 PM, Amos Jeffries wrote:
> On 9/08/2016 6:01 a.m., Alex Rousskov wrote:
>> On 08/08/2016 04:43 AM, Amos Jeffries wrote:
>>
>>>   r14778: Move static member Last into change() method to avoid initialization order
>>>   errors when a caller uses a global InstanceId object before the library
>>>   instantiating its template is initialized.

>> Have you seen these Last errors?


> I don't think the pre-initialization of simple types is the issue here.
> Or maybe Last being an int and thus using that pre-initialization
> instead of having a contructor symbol is the root of the compilers
> confusion.

> It has been occuring on the d,debian-clang farm node for the last few
> weeks. Relevant part of the log output below.

> ../../../../src/base/InstanceId.h:28:27: error: instantiation of
> variable 'InstanceId<SBuf>::Last' required here, but no definition is
> available [-Werror,-Wundefined-var-template]
>     InstanceId(): value(++Last ? Last : ++Last) {}


> The suggested declaration turns out not to e very portable, so I went
> with moving the global symbol into a method.

My interpretation of what you are saying is: "I have not seen any
initialization order errors that r14778 commit message talks about. I
have seen compiler errors. The true reasons behind those compiler errors
are not well understood, but moving Last into a method avoids errors in
my tests".

Is that interpretation accurate?


Thank you,

Alex.



More information about the squid-dev mailing list