-
Bug
-
Resolution: Unresolved
-
Undefined
-
None
-
rhel-9.6.z, rhel-9.7
-
None
-
No
-
None
-
rhel-kernel-rts
-
ssg_core_kernel
-
0
-
False
-
False
-
-
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.