Uploaded image for project: 'RHEL'
  1. RHEL
  2. RHEL-84068

stalld: FTBFS with sched_setattr/sched_getatttr support in glibc

Linking RHIVOS CVEs to...Migration: Automation ...SWIFT: POC ConversionSync from "Extern...XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Undefined Undefined
    • None
    • rhel-9.6.z, rhel-9.7
    • stalld
    • None
    • No
    • None
    • rhel-kernel-rts
    • ssg_core_kernel
    • 0
    • False
    • False
    • Hide

      None

      Show
      None
    • None
    • None
    • None
    • None
    • Unspecified
    • Unspecified
    • Unspecified
    • All
    • None

      Based on recommendations from the kernel team, we are adding sched_getattr and sched_setattr support to glibc in RHEL 9.7 (RHEL-56627), RHEL 9.6.z (RHEL-83970) and RHEL 10 (RHEL-58357). This causes stalld to fail to build from source (so far only confirmed for stalld-1.19.6-1.el9.

      In file included from src/queue_track.c:26:
      src/stalld.h:133:8: error: redefinition of 'struct sched_attr'
        133 | struct sched_attr {
            |        ^~~~~~~~~~
      In file included from /usr/include/bits/sched.h:60,
                       from /usr/include/sched.h:43,
                       from src/stalld.h:13,
                       from src/queue_track.c:26:
      /usr/include/linux/sched/types.h:102:8: note: originally defined here
        102 | struct sched_attr {
            |        ^~~~~~~~~~
      In file included from src/queue_track.c:26:
      src/stalld.h:144:19: error: conflicting types for 'sched_setattr'; have 'int(pid_t,  const struct sched_attr *, unsigned int)' {aka 'int(int,  const struct sched_attr *, unsigned int)'}
        144 | static inline int sched_setattr(pid_t pid, const struct sched_attr *attr,
            |                   ^~~~~~~~~~~~~
      In file included from /usr/include/sched.h:43,
                       from src/stalld.h:13,
                       from src/queue_track.c:26:
      /usr/include/bits/sched.h:141:5: note: previous declaration of 'sched_setattr' with type 'int(pid_t,  struct sched_attr *, unsigned int)' {aka 'int(int,  struct sched_attr *, unsigned int)'}
        141 | int sched_setattr (pid_t tid, struct sched_attr *attr, unsigned int flags)
            |     ^~~~~~~~~~~~~
      In file included from src/queue_track.c:26:
      src/stalld.h:149:19: error: conflicting types for 'sched_getattr'; have 'int(pid_t,  struct sched_attr *, unsigned int,  unsigned int)' {aka 'int(int,  struct sched_attr *, unsigned int,  unsigned int)'}
        149 | static inline int sched_getattr(pid_t pid, struct sched_attr *attr,
            |                   ^~~~~~~~~~~~~
      In file included from /usr/include/sched.h:43,
                       from src/stalld.h:13,
                       from src/queue_track.c:26:
      /usr/include/bits/sched.h:146:5: note: previous declaration of 'sched_getattr' with type 'int(pid_t,  struct sched_attr *, unsigned int,  unsigned int)' {aka 'int(int,  struct sched_attr *, unsigned int,  unsigned int)'}
        146 | int sched_getattr (pid_t tid, struct sched_attr *attr, unsigned int size,
            |     ^~~~~~~~~~~~~
      make: *** [<builtin>: src/queue_track.o] Error 1
      

      I believe this has been fixed in the upstream Git repository, but I'm not sure to what extend it's based on a check against glibc version 2.41. Checking whether <sched.h> defines SCHED_FLAG_DL_OVERRUN might be more reliable.

              williams@redhat.com Clark Williams
              fweimer@redhat.com Florian Weimer
              William White William White
              Chang Yin Chang Yin
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

                Created:
                Updated: