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

Martin Buchholz martinrb at google.com
Thu Jun 21 20:24:25 UTC 2018


I see:

Don't use
  // os::current_stack_pointer(), as its result can be slightly below
current
  // stack pointer, causing us to not alloca enough to reach "bottom".

If you really really want to get the stack pointer of the current frame,
you can't put it in a function!  Use magic compiler extensions via a macro.

gcc and clang both have __builtin_frame_address(0).

gcc BUT not clang has
register uint64_t rsp asm ("rsp");
BUT that gives a slightly different value from __builtin_frame_address(0)
(different register? don't know much about x86 assembly)


On Thu, Jun 21, 2018 at 5:37 AM, Thomas Stüfe <thomas.stuefe at gmail.com>
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?
>
> ..Thomas
>
> > David
>


More information about the hotspot-runtime-dev mailing list