<<< Date Index >>>     <<< Thread Index >>>

Re: Bug in Sun studio 11



On Friday, 15 June 2007 at 17:02, Kyle Wheeler wrote:
> On Friday, June 15 at 02:59 PM, quoth Brendan Cully:
>> On Friday, 15 June 2007 at 22:08, Vladim'ir Marek wrote:
>>>>> Hi, I found bug in SS11 which is triggered by mutt source. It makes 
>>>>> function crc_matches return false even if the crc is correct. This 
>>>>> virtually disables header cache.
>>>>> unsigned int mycrc = 0; to static unsigned int mycrc = 0;
>>> [...]
>>>> Wow, that's voodoo. I don't see any harm in making the change though.
>>> Making the variable static makes compiler to store the value to physical 
>>> memory and not just to register. I can confirm that on SS12 the problem
>>
>> you'd think &mycrc would have the same effect :)
>
> It *should*, but I guess that's the very definition of a bug, eh? :)
>
>>> no longer exists. But at the same time, SS11 may not be fixed, since it is 
>>> not priority anymore ...
>>
>> I'll probably apply it. I'm just giving it time to see if any other C gurus 
>> comment.
>
> Well... there's the obvious comment, which is that if you're relying on 
> mycrc being initialized to zero in the function, making it static will break 
> that, so you'd need to add a separate mycrc=0; line in after it is declared, 
> because the existing initialization won't take care of that.

No, restore_int always clobbers the variable. The zeroing just looks
like paranoia.

> The other problem with making it static is that it prevents the compiler 
> from doing certain kinds of optimization. That's not a performance-critical 
> function, but... I'd be somewhat uncomfortable with adding goofy-looking 
> code to work around compiler bugs---especially when the bug has been fixed 
> in the current version of the compiler. I mean, we aren't still working 
> around gcc 1.0 bugs, why work around SS11 bugs? If anything, put it in an 
> #ifdef, such as:

Yeah, fair enough. I'll put it in if someone can tell me the right
guard macro.

Attachment: pgp4ntuUQmzS9.pgp
Description: PGP signature