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]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to