[PATCH] tst-setcontext2: avoid bug from compiler optimization
Florian Weimer
fweimer@redhat.com
Mon Jan 30 11:57:00 GMT 2017
On 01/27/2017 10:53 PM, Chris Metcalf wrote:
> On 1/27/2017 4:30 PM, Florian Weimer wrote:
>> On 01/27/2017 09:34 PM, Chris Metcalf wrote:
>>> I'd like to commit the one-line patch below that just declares the
>>> context
>>> variables for test-setcontext2 as static. I think the consensus is that
>>> this is necessary,
>>
>> No, I think the test is supposed to work as-is; it is valid.
>>
>> So if this test is broken, it is a bug in the implementation of the
>> context switching functions (as they are visible to applications, i.e.
>> the fix might not be in the functions themselves, but adjusting their
>> calling conventions, inhibiting GCC optimizations which make incorrect
>> assumptions, etc.).
>>
>> If we do not have a fix right now, it is better to let the test keep
>> failing (perhaps XFAIL it), rather than tweaking it so that it tests
>> something else.
>
> We would be waiting on functionality from gcc that doesn't currently
> exist, correct? The current returns_twice semantics is insufficient to
> describe the problem that we currently see with shared stack frames.
I think this could still be a GCC regression in the handling of the
returns_twice attribute, introduced when GCC started sharing stack slots
more aggressively. When returns_twice was initially implemented and
documented, the question of stack slot reuse did not arise because GCC
probably did not do it at all.
> It's possible that returns_twice could be extended to also have the
> semantics of "don't share my arguments' stack space with any other
> variables in this function" pretty reasonably, but I don't want to try to
> guess what will make most sense to the gcc folks.
GCC already has this behavior on x86_64. This could be an accident.
> I can certainly let the test keep failing and just open a bug to reference
> it and capture some of this discussion.
Yes, would you please file a GCC bug with a preprocessed input file?
Thanks,
Florian
More information about the Libc-alpha
mailing list