This is the mail archive of the libc-help@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]

Re: Crashes in x86_64 math functions


On 02/01/12 12:24, Allan McRae wrote:
> I am seeing some crashes in subversion and apache from various math
> functions in glibc-2.15 on x86_64 with backtraces like:
> 
> 
> #0 0x0000000000005446 in ?? ()
> #1 0x00007fffebddb095 in floor () from /lib/libm.so.6
> #2 0x00007ffff7de805c in _dl_relocate_object () from
> /lib/ld-linux-x86-64.so.2
> #3 0x00007ffff7dee526 in dl_open_worker () from /lib/ld-linux-x86-64.so.2
> #4 0x00007ffff7dea286 in _dl_catch_error () from /lib/ld-linux-x86-64.so.2
> #5 0x00007ffff7dede6a in _dl_open () from /lib/ld-linux-x86-64.so.2
> #6 0x00007ffff66fef26 in ?? () from /lib/libdl.so.2
> #7 0x00007ffff7dea286 in _dl_catch_error () from /lib/ld-linux-x86-64.so.2
> #8 0x00007ffff66ff4cf in ?? () from /lib/libdl.so.2
> #9 0x00007ffff66fefc1 in dlopen () from /lib/libdl.so.2
> #10 0x00007ffff7742e5b in apr_dso_load () from /usr/lib/libapr-1.so.0
> ...
> 
> I bisected the issues to commits:
> 
> Use rounds{s,d} for x86 rint, ceil, floor
> http://sourceware.org/git/?p=glibc.git;a=commit;h=ad0f5cad
> (crashes in floor/ceil)
> 
> Optimize accurate 64-bit routines for FMA4 on x86-64
> http://sourceware.org/git/?p=glibc.git;a=commit;h=af968f62
> (crash in sin/tan)
> 
> 
> Not all x86_64 machines are affected so I figured it was probably
> multiarch stuff and this seems confirmed by the issues being "fixed" by
> deleting the relevant files in sysdeps/x86_64/fpu/multiarch.
> 
> This is using glibc-2.15 built with gcc-4.6.2 (20111223), binutils
> 2.22.0 (20111227) and linux-3.1.5.
> 
> Is anyone else seeing similar issues?


No-one else seeing that at all?

I looked further into the crashes for sin/tan crashes and found that
if I changed this line:

libm_ifunc (tan, HAS_FMA4 ? __tan_fma4 : HAS_AVX ? __tan_avx : __tan_sse2);

to just:

libm_ifunc (tan, __tan_sse2);

then everything works again.  The processors the segfaults are observed
on do not have AVX or FMA4, so is the detection of this support perhaps
not working properly?

Allan



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