guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 'core-updates' spring 2018


From: Ricardo Wurmus
Subject: Re: 'core-updates' spring 2018
Date: Wed, 28 Mar 2018 15:32:40 +0200
User-agent: mu4e 1.0; emacs 25.3.1

Hi Marius,

> Are you sure prlimit64 is the only syscall that needs to be adjusted?  A
> quick grep through through the commit log reveals some other interfaces
> that may need to be restored.

I’m not sure, but I looked at the RHEL6 kernel’s syscall table:

    curl 
http://vault.centos.org/6.9/os/Source/SPackages/kernel-2.6.32-696.el6.src.rpm | 
rpm2cpio - | cpio -idmv
    tar xf linux-*bz2
    less linux-*?/arch/x86/kernel/syscall_table_32.S

Looking at the table I see that the following syscalls are not
implemented and not marked as old or reserved:

        .long sys_ni_syscall    /* sys_vserver */
        .long sys_ni_syscall            /* 285 */ /* available */
        .long sys_ni_syscall    /* sys_fanotify_init */
        .long sys_ni_syscall    /* sys_fanotify_mark */
        .long sys_ni_syscall    /* sys_prlimit64  340 */
        .long sys_ni_syscall    /* sys_name_to_handle_at */
        .long sys_ni_syscall    /* sys_open_by_handle_at */

I don’t know what “available” is supposed to mean for number 285
(fallocate?) when the syscall is not implemented.  “vserver” is
not implemented on purpose according to man 2 unimplemented.

Also, I’ve been using a bunch of applications with the grafted glibc,
and the only thing I had problems with was Java’s use of prlimit64.  If
the other missing syscalls are problematic they don’t seem to affect the
software that is in use on the cluster.

Below I’ll refer to Linux 2.6.32-696.3.2.el6.x86_64, i.e. the current
RHEL6 kernel for x86_64.

> Here is the commit that removes the fallback code for missing prlimit64:
> https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=695d7d138eda449678a1650a8b8b58181033353f
>
> And here are similar commits I found by grepping the log for '3.2':
> https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=e92030239abb4038d4f915d47021d6c037239309

This is about accept4, which I cannot find in the syscall table, but
which is defined in include/linux/net.h and include/linux/syscalls.h.

> https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=1721145f0341d70a6d7807b172c5eb400b508fc0

This is about /proc/self/task/$PID/comm, which exists.

> https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=9a45f54310573c190fa270e1f80d8307750305e9

This is about recvmmsg, which is implemented.

> https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=e8f1225ca4d4afa4043c5267ae6dbe12268e2637

This is about the flags from statvfs.  I don’t know how to ascertain
whether this is implemented or not.

> Since it's fairly late in the core-updates cycle, I think it would be
> better to try restoring the prlimit64 fallback on the "rhel6" branch and
> then revisit this during the next core-updates.

I’m not too happy with this, because the longer we delay this the more
packages we have to build.  The longer the rhel6 branch has to be kept
alive the more urgent it becomes to build rhel6-core-updates and
duplicate efforts for the variant where glibc 2.25 is used.  I want to
keep this situation as short-lived as possible.

The change would only affect the 2.6.32 kernel (we shouldn’t just revert
that prlimit64 commit, but pick only the relevant parts).

> This got me thinking, perhaps it's possible to run Guix through a thin
> hypervisor layer that uses the host virtualization facilities, or a Qemu
> built against glibc 2.25.  This is similar to how "Docker" runs on
> macOS, maybe it could be used for Guix in "hostile environments" too?

I don’t want to spend time investigating this, but if someone wants to
work on this I’d be happy to test the results on my RHEL6 systems.

--
Ricardo

GPG: BCA6 89B6 3655 3801 C3C6  2150 197A 5888 235F ACAC
https://elephly.net





reply via email to

[Prev in Thread] Current Thread [Next in Thread]