The crash stack trace is:

(gdb) bt
#0  0x0000000000005446 in ?? ()
#1  0x00007ffff5137fc5 in floor () at 
../sysdeps/x86_64/fpu/multiarch/s_floor.S:26
#2  0x00007ffff7de6a2b in elf_machine_rela (sym=0x7ffff511ec88, skip_ifunc=0, 
reloc_addr_arg=0x7ffff41c5060, version=<optimized out>, map=0x60b090, 
reloc=<optimized out>)
    at ../sysdeps/x86_64/dl-machine.h:302
#3  elf_dynamic_do_Rela (skip_ifunc=0, lazy=<optimized out>, 
nrelative=<optimized out>, relsize=<optimized out>, reladdr=<optimized out>, 
map=0x60b090) at do-rel.h:146
#4  _dl_relocate_object (scope=0x60b3e8, reloc_mode=<optimized out>, 
consider_profiling=0) at dl-reloc.c:265
#5  0x00007ffff7ded936 in dl_open_worker (a=0x7fffffffd690) at dl-open.c:338
#6  0x00007ffff7de9126 in _dl_catch_error (objname=0x7fffffffd6d8, 
errstring=0x7fffffffd6e0, mallocedp=0x7fffffffd6ef, operate=0x7ffff7ded6b0 
<dl_open_worker>, args=0x7fffffffd690)
    at dl-error.c:178
#7  0x00007ffff7ded2ca in _dl_open (file=0x605000 
"/usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-svg.so",
 mode=-2147483390, caller_dlopen=0x7ffff7bd76fc, nsid=-2, 
    argc=2, argv=<optimized out>, env=0x7fffffffdb30) at dl-open.c:575
#8  0x00007ffff7107f26 in dlopen_doit (a=0x7fffffffd8b0) at dlopen.c:67
#9  0x00007ffff7de9126 in _dl_catch_error (objname=0x6047e0, 
errstring=0x6047e8, mallocedp=0x6047d8, operate=0x7ffff7107ec0 <dlopen_doit>, 
args=0x7fffffffd8b0) at dl-error.c:178
#10 0x00007ffff710852f in _dlerror_run (operate=0x7ffff7107ec0 <dlopen_doit>, 
args=0x7fffffffd8b0) at dlerror.c:164
#11 0x00007ffff7107fc1 in __dlopen (file=<optimized out>, mode=<optimized out>) 
at dlopen.c:88
#12 0x00007ffff7bd76fc in _g_module_open (bind_local=<optimized out>, 
bind_lazy=<optimized out>, 
    file_name=0x605000 
"/usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-svg.so")
 at /build/buildd/glib2.0-2.31.10/./gmodule/gmodule-dl.c:99
#13 g_module_open (file_name=0x604630 
"/usr/lib/x86_64-linux-gnu/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-svg.so",
 flags=<optimized out>)
    at /build/buildd/glib2.0-2.31.10/./gmodule/gmodule.c:584
#14 0x00000000004010a0 in ?? ()
#15 0x0000000000400d94 in ?? ()
#16 0x00007ffff732c76d in __libc_start_main (main=0x400cf0, argc=2, 
ubp_av=0x7fffffffdb18, init=<optimized out>, fini=<optimized out>, 
rtld_fini=<optimized out>, stack_end=0x7fffffffdb08)
    at libc-start.c:226

The crash is happening while relocating 
/usr/lib/x86_64-linux-gnu/libpixman-1.so.0,
while processing this symbol (refsym):
    17: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND floor@GLIBC_2.2.5 (4)

The symbol that we are trying to bind this to (sym) is an IFUNC in 
/lib/x86_64-linux-gnu/libm.so.6:

    60: 000000000001afc0    32 IFUNC   WEAK   DEFAULT   13
floor@@GLIBC_2.2.5

The problem is that we CALL from __floor to *unrelocated* address (0x5446)
of __get_cpu_features (that is, libm.so.6 hasn't been relocated yet.

I have not been able to create a simple reproducer ;-(

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/919202

Title:
  [2.15~pre6] regression: crashes in dlopen()

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/eglibc/+bug/919202/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to