This is the mail archive of the glibc-bugs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug libc/12113] New: Segmentation fault in dynamic loader on AVX enabled OS and CPU with AVX


http://sourceware.org/bugzilla/show_bug.cgi?id=12113

           Summary: Segmentation fault in dynamic loader on AVX enabled OS
                    and CPU with AVX
           Product: glibc
           Version: 2.11
            Status: UNCONFIRMED
          Severity: critical
          Priority: P2
         Component: libc
        AssignedTo: drepper.fsp@gmail.com
        ReportedBy: slvital@gmail.com


Created attachment 5053
  --> http://sourceware.org/bugzilla/attachment.cgi?id=5053
small reproducer of this problem

Small example is attached: unpack, run âmakeâ, then run â./exeâ -> segmentation
fault (wonât segfault on non-AVX OS or CPU)

Stack of crash:
#0  _dl_x86_64_save_sse () at ../sysdeps/x86_64/dl-trampoline.S:189
#1  0x0000003dc380a7dd in add_dependency (flags=5, map=0x7ffff0000910,
undef_map=0x7ffff0000e70) at dl-lookup.c:613
#2  _dl_lookup_symbol_x (flags=5, map=0x7ffff0000910, undef_map=0x7ffff0000e70)
at dl-lookup.c:816
#3  0x0000003dc380dbb0 in _dl_fixup (l=0x0, reloc_arg=<value optimized out>) at
../elf/dl-runtime.c:118
#4  0x0000003dc3814315 in _dl_runtime_resolve () at
../sysdeps/x86_64/dl-trampoline.S:41
#5  0x00007ffff71cf5dc in hello2 () from ./libso2.so
#6  0x00007ffff73d0636 in hello1 () from ./libso1.so
#7  0x000000000040075e in doTask ()
#8  0x0000003dc4406a3a in start_thread (arg=0x7ffff7fd1710) at
pthread_create.c:297
#9  0x0000003dc3cde77d in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#10 0x0000000000000000 in ?? ()

Short description:

There is AVX support in glibc 2.11. Function _dl_x86_64_save_sse has been
updated with saving AVX registers. In fact, first AVX instruction in this code
crashes being called from additional thread. To cause calling
_dl_x86_64_save_sse function it is needed to have two DSOs loaded via dlopen
with RTLD_LAZY having two global symbols with identical names. Then it is
needed to call this function from both DSOs, second call will cause calling
_dl_x86_64_save_sse.

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]