[PATCH] Disable lazy binding on tests for minimal signal handler

H.J. Lu hjl.tools@gmail.com
Fri Jan 18 17:23:00 GMT 2019


On Fri, Jan 18, 2019 at 8:40 AM Carlos O'Donell <carlos@redhat.com> wrote:
>
> On 1/18/19 9:53 AM, H.J. Lu wrote:
> > On Thu, Jan 17, 2019 at 7:12 PM Zack Weinberg <zackw@panix.com> wrote:
> >>
> >> On Wed, Jan 16, 2019 at 10:31 PM H.J. Lu <hjl.tools@gmail.com> wrote:
> >>>
> >>> The new tests failed on AVX512 machines:
> >>>
> >>> Program received signal SIGUSR1, User defined signal 1.
> >>> __GI_raise (sig=sig@entry=10) at ../sysdeps/unix/sysv/linux/raise.c:50
> >>> 50   return ret;
> >>> (gdb) c
> >>> Continuing.
> >>>
> >>> Program received signal SIGSEGV, Segmentation fault.
> >>> _dl_runtime_resolve_xsavec () at ../sysdeps/x86_64/dl-trampoline.h:93
> >>> 93 movq %rax, REGISTER_SAVE_RAX(%rsp)
> >>> (gdb) bt
> >>> #0  _dl_runtime_resolve_xsavec () at ../sysdeps/x86_64/dl-trampoline.h:93
> >>> #1  0x0040248d in handler (unused=<optimized out>) at tst-minsigstksz-4.c:44
> >>> #2  <signal handler called>
> >>> #3  __GI_raise (sig=sig@entry=10) at ../sysdeps/unix/sysv/linux/raise.c:50
> >>> #4  0x004024da in do_test () at tst-minsigstksz-4.c:59
> >>> #5  0x00402cd6 in support_test_main (argc=1, argv=0xffffcef8,
> >>>     config=config@entry=0xffffcdf0) at support_test_main.c:350
> >>> #6  0x00402348 in main (argc=<optimized out>, argv=<optimized out>)
> >>>     at ../support/test-driver.c:168
> >>> (gdb)
> >>>
> >>> AVX512 needs 2560 bytes to save processor state.
> >>
> >> Well, this is the problem that we knew existed and can't fix quickly.
> >> If I'm reading http://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html
> >> correctly, we can't introduce new sysconf constants unilaterally
> >> (there is no license to define system-specific _SC_* symbols).
> >>
> >> I wonder if this test passes if you run it with LD_BIND_NOW=t in the
> >> environment.  Forcing -z now for these tests might be the best we can
> >> do for 2.29.
> >>
> >
> > This works:
> >
> > diff --git a/signal/Makefile b/signal/Makefile
> > index 9597287bca..9c65c26887 100644
> > --- a/signal/Makefile
> > +++ b/signal/Makefile
> > @@ -59,3 +59,9 @@ CFLAGS-sigwait.c += -fexceptions -fasynchronous-unwind-tables
> >  CFLAGS-sigwaitinfo.c += -fexceptions -fasynchronous-unwind-tables
> >
> >  CFLAGS-sigreturn.c += $(no-stack-protector)
> > +
>
> OK with comment:
>
> # We don't want to test the lazy resolution stack usage
> # just the execution of the handler and the functions
> > +LDFLAGS-tst-minsigstksz-1 = -Wl,-z,now
> > +LDFLAGS-tst-minsigstksz-2 = -Wl,-z,now
> > +LDFLAGS-tst-minsigstksz-3 = -Wl,-z,now
> > +LDFLAGS-tst-minsigstksz-3a = -Wl,-z,now
> > +LDFLAGS-tst-minsigstksz-4 = -Wl,-z,now
> >
>
> I'd say this is OK for master.
>
> Reviewed-by: Carlos O'Donell <carlos@redhat.com>
>
> All of this raises an interesting point. Should MINSIGSTKSZ
> have included enough space for the lazy resolution to happen?
> I think we have to, because you're never going to have already
> called abort, quick_exit, or _exit, so they will all go through
> lazy binding resolution if you're not BIND_NOW. Which means we
> need an average estimate from all arches about the lazy binding
> stack usage.
>

This is the patch I am checking in.

Thanks.

-- 
H.J.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Disable-lazy-binding-on-tests-for-minimal-signal-han.patch
Type: text/x-patch
Size: 1951 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/libc-alpha/attachments/20190118/3f2f20f4/attachment.bin>


More information about the Libc-alpha mailing list