Red Hat Bugzilla – Full Text Bug Listing
|Summary:||pthread_attr_setschedparam behaviour doesn't match POSIX|
|Product:||Red Hat Enterprise Linux 3||Reporter:||Bastien Nocera <bnocera>|
|Component:||glibc||Assignee:||Jakub Jelinek <jakub>|
|Status:||CLOSED NOTABUG||QA Contact:||Brian Brock <bbrock>|
|Fixed In Version:||Doc Type:||Bug Fix|
|Doc Text:||Story Points:||---|
|Last Closed:||2005-11-23 09:39:03 EST||Type:||---|
|oVirt Team:||---||RHEL 7.3 requirements from Atomic Host:|
|Bug Depends On:|
Description Bastien Nocera 2005-11-23 09:11:14 EST
When the scheduler has already been set, and the priority is above that allowed by the scheduler, pthread_attr_setschedparam doesn't fail with EINVAL when it should . This is due to: http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/nptl/pthread_attr_setschedparam.c.diff?r1=1.2&r2=1.3&cvsroot=glibc  EINVAL the priority specified in param is outside the range of allowed priorities for the scheduling policy currently in attr (1 to 99 for SCHED_FIFO and SCHED_RR; 0 for SCHED_OTHER). pthread_attr_setschedparam should error with an EINVAL when the scheduler type has already been set, and the priority isn't in the allowed range, rather than just during pthread_create.
Comment 2 Jakub Jelinek 2005-11-23 09:23:13 EST
Doesn't look like a bug to me. POSIX says: http://www.opengroup.org/onlinepubs/009695399/functions/pthread_attr_setschedparam.html The pthread_attr_setschedparam() function may fail if: [EINVAL] The value of param is not valid, or the value specified by attr does not refer to an initialized thread attribute object. [ENOTSUP] An attempt was made to set the attribute to an unsupported value. "MAY FAIL IF" is not "SHALL FAIL IF", therefore it is conforming if the error isn't returned. The only guarantee that this gives you is if such an error is detected and error returned, then the errno value for that must be EINVAL.
Comment 3 Bastien Nocera 2005-11-23 09:34:53 EST
Then the man-page is broken: The pthread_attr_setschedparam function returns the following error codes on error: EINVAL the priority specified in param is outside the range of allowed priorities for the scheduling policy currently in attr (1 to 99 for SCHED_FIFO and SCHED_RR; 0 for SCHED_OTHER). $ whereis pthread_attr_setschedparam pthread_attr_setschedparam: /usr/share/man/man3/pthread_attr_setschedparam.3thr.gz $ rpm -qf /usr/share/man/man3/pthread_attr_setschedparam.3thr.gz glibc-devel-2.3.2-95.33
Comment 4 Jakub Jelinek 2005-11-23 09:39:03 EST
That is a LinuxThreads man page, clearly marked as that. In RHEL4 there is pthread_attr_setschedparam man page in the 3p section as well that describes the POSIX (and thus also NPTL) behaviour. For RHEL4 U3 we are removing all LinuxThreads man pages from glibc-devel, but in RHEL3 the POSIX man pages aren't provided (yet), therefore the LinuxThreads man pages shouldn't be deleted there.