On Sun, Jun 6, 2021 at 12:51 PM Alexander Kanavin <alex.kana...@gmail.com> wrote: > > On Sun, 6 Jun 2021 at 01:10, Richard Purdie > <richard.pur...@linuxfoundation.org> wrote: >> >> I tried again with the autobuilder, still fails: >> >> https://autobuilder.yoctoproject.org/typhoon/#/builders/48/builds/3516 >> >> so whatever it is, it is still "live". > > > I did some digging. The issue happens when: > - host is centos8 > - SDKMACHINE is i686 (e.g. cmake is 32 bit) > > Then there's a failing syscall attempting to set file times: > utimensat_time64(AT_FDCWD, > "../install/usr/local/lib/cmake/assimp-4.1/assimp-config.cmake", > [{tv_sec=1622966723, tv_nsec=6319439026193432576}, {tv_sec=1622966579, > tv_nsec=17840053692309438464}], 0) = -1 EINVAL (Invalid argument) > > On latest Fedora, there's no issue: > utimensat_time64(AT_FDCWD, > "../install2/usr/local/lib/cmake/assimp-4.1/assimp-config.cmake", > [{tv_sec=1623002886, tv_nsec=6369724778172907520}, {tv_sec=1623002886, > tv_nsec=17839174083007217664}], 0) = 0 > > utimensat_time64 only appeared with 5.1 kernels, however, 4.18 should be > returning ENOSYS in that case probably? > > i686 SDK is using its own libc, and from what I can tell that libc is trying > to be Y2038 compatible, e.g. calling the 64 bit version first, and if that > returns ENOSYS, it falls through to the 32 bit version. But because centos > kernel returns EINVAL, the 32 bit version is never attempted: > https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/utimensat.c;h=909a29762b504091a4e32487d8bc4cc68d34c508;hb=HEAD > > I also tried this in Ubuntu 18.04 (kernel 4.15), the fall-through works > correctly: > syscall_0x19c(0xffffff9c, 0x579e4260, 0xffe46590, 0, 0xf7aace3c, 0xffe46768) > = -1 (errno 38) > utimensat(AT_FDCWD, > "../install2/usr/local/lib/cmake/assimp-4.1/assimp-config.cmake", > [{tv_sec=1623008744, tv_nsec=0} /* 2021-06-06T19:45:44+0000 */, > {tv_sec=1623008629, tv_nsec=0} /* 2021-06-06T19:43:49+0000 */], 0) = 0 > > The bottom line, this looks like a botched kernel update in Centos8 - > possibly a backport of time64 calls that doesn't work with non-centos libc? >
Good sleuthing. Can you find out if libseccomp is in play ? if so what version of libseccomp is being used by cmake if it is libseccomp < 2.4.2 then time64 syscall support won't be there unless its backported to the older version. > Alex
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#152743): https://lists.openembedded.org/g/openembedded-core/message/152743 Mute This Topic: https://lists.openembedded.org/mt/83304703/21656 Group Owner: openembedded-core+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-