I have been playing with ffmpeg using x265 codec (https://bitbucket.org/multicoreware/x265/wiki/Home) and in order to eliminate any possible issues due to potentially limited NUMA support in OSV I have been trying to rebuild libx265.so from sources and disabling NUMA options.
For whatever reason which I do not understand the recompiled version of libx265.so depends on libmvec.so whereas the version of libx265.so that get by installing the distribution development does not: -- distribution version ldd /usr/lib/x86_64-linux-gnu/libx265.so.160 linux-vdso.so.1 (0x00007ffff8d8c000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f74effd1000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f74effcb000) libnuma.so.1 => /usr/lib/x86_64-linux-gnu/libnuma.so.1 (0x00007f74efdc0000) libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f74efc36000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f74efaa9000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f74ef8bf000) /lib64/ld-linux-x86-64.so.2 (0x00007f74f10f5000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f74ef8a3000) -- rebuilt version ldd build/linux/8bit/libx265.so.160 linux-vdso.so.1 (0x00007ffd83bdb000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fdcaf4de000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fdcaf4d8000) libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fdcaf34e000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fdcaf1c1000) * libmvec.so.1 => /lib/x86_64-linux-gnu/libmvec.so.1 (0x00007fdcaf195000)* libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fdcaefab000) /lib64/ld-linux-x86-64.so.2 (0x00007fdcb07bd000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fdcaef8f000) where my image looks like it: Adding /libenviron.so... Adding /libvdso.so... Adding /zpool.so... Adding /libzfs.so... Adding /libuutil.so... Adding /zfs.so... Adding /tools/mkfs.so... Adding /tools/cpiod.so... Adding /tools/mount-nfs.so... Adding /tools/umount.so... Adding /usr/lib/libgcc_s.so.1... Adding /etc/hosts... Link /etc/mnttab to /proc/mounts ... Adding /etc/fstab... Adding /dev... Adding /proc... Adding /tmp... Adding /usr/lib/libz.so.1... Adding /libavformat.so.58... Adding /libswresample.so.3... Adding /libswscale.so.5... Adding /libavfilter.so.7... Adding /ffmpeg.so... Adding /libpostproc.so.55... Adding /libavdevice.so.58... Adding /libavcodec.so.58... Adding /libavutil.so.56... Adding /usr/lib/libx265.so.160... Adding /usr/lib/libmvec.so.1... When I try to start OSv with the rebuilt version I get the error about bout missing _rtld_global_ro symbol which I believe is part of glibc. When I remove libmvec then it complains about missing vector functions like _ZGVdN4v_log that libmvec provides and apparently x265 sources depend on. I have not found any reference to those mvec funcions directly in x265 source code so maybe it is gcc automatically compiling code to use those. The version of x265 is the same for both distribution and compiled from sources version of library. I am not 100% about the compile options. The compiled one uses gcc 8.2, the distribution one uses 7.3. It seems to me that OSv should provide those glibc vector functions (https://github.com/sgallagher/glibc/blob/master/sysdeps/unix/sysv/linux/x86_64/libmvec.abilist) but I also do not understand why the distribution version of libx265 does NOT depend on libmvec whereas the compiled from sources does. Any ideas? Waldek -- You received this message because you are subscribed to the Google Groups "OSv Development" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
