RFR: 8186780: clang-4.0 fastdebug assertion failure in os_linux_x86:os::verify_stack_alignment()

David Holmes david.holmes at oracle.com
Fri Jun 22 11:57:08 UTC 2018


On 21/06/2018 10:37 PM, Thomas Stüfe wrote:
> On Thu, Jun 21, 2018 at 1:27 PM, David Holmes <david.holmes at oracle.com> wrote:
>> On 21/06/2018 10:05 AM, Martin Buchholz wrote:
>>>
>>> On Wed, Jun 20, 2018 at 4:03 PM, Martin Buchholz <martinrb at google.com
>>> <mailto:martinrb at google.com>> wrote:
>>>
>>>      Hi David and build-dev folk,
>>>
>>>      After way too much build/hotspot hacking, I have a better fix:
>>>
>>>      clang inlined os::current_stack_pointer into its caller __in the
>>>      same translation unit___ (that could be fixed in a separate change)
>>>      so of course in this case it didn't have to follow the ABI.  Fix is
>>>      obvious in hindsight:
>>>
>>>      -address os::current_stack_pointer() {
>>>      +NOINLINE address os::current_stack_pointer() {
>>>
>>>
>>> If y'all like the addition of NOINLINE, it should probably be added to all
>>> of the 14 variants of os::current_stack_pointer.
>>> Gives me a chance to try out the submit repo.
>>
>>
>> I can't help but think other platforms actually rely on it being inlined so
>> that it really does return the stack pointer of the method calling
>> os::current_stack_pointer!
>>
> 
> But we only inline today if caller is in the same translation unit and
> builds with optimization, no?

Don't know, but Martin's encountering a case where it is being inlined - 
is that likely to be unique for some reason?

I never assume the compiler does the obvious these days :) or that there 
can't be clever link-time tricks as well.

Maybe the safest thing to do is to only make a change for the clang case 
and leave everything else alone.

David
-----

> 
> ..Thomas
> 
>> David


More information about the hotspot-runtime-dev mailing list