Closed teobouvard closed 1 year ago
libm.so
provided by this package is supposed to be used for building packages only. Using the package by preloading it or dlopening it is unsupported.
Oh ok, thanks for the answer!
Do you know why I'm still able to dlopen
it, but it resolves an unsupported implementation for the sin
symbol ? Just curious.
Solution to issue cannot be found in the documentation.
Issue
Hello,
When dynamically loading the
sin()
function from thelibm.so.6
provided by this package, I get an FMA4 implementation (__sin_fma4
), which is not supported by my CPU (AMD Ryzen 7 3700X). Running the resulting binary triggers an illegal instruction (vfmaddsd
).You should be able to reproduce this issue by compiling the following program
using
and then execute it, giving it the path to the libm shared library bundled with this conda package.
On my host, this results in an illegal instruction. Running it through gdb shows that the cause is the FMA4 instruction
vfmaddsd
.A few informations:
Note that this procedure works on CentOS7, using the same version of
libm
(2.17) but a matching version of theglibc
's linker/loader. This also works on my host when using the system'slibm.so
, which is more recent (2.37).I tried building version 2.17 of
libm
fromglibc
sources, but when running my test case against the built shared library, it failed at thedlopen()
call:libm
older than the version of my linker/loader ? I would think so, but if this assumption is wrong then that explains a lot.libm.so
provided by this package ?Thanks for your answers.
Installed packages
Environment info