New submission from Charles-François Natali neolo...@free.fr:
http://www.python.org/dev/buildbot/all/builders/x86%20FreeBSD%206.4%203.x/builds/1734/steps/test/logs/stdio
==
ERROR: test_get_and_set_scheduler_and_param (test.test_posix.PosixTester)
--
Traceback (most recent call last):
File
/usr/home/db3l/buildarea/3.x.bolen-freebsd/build/Lib/test/test_posix.py, line
878, in test_get_and_set_scheduler_and_param
posix.sched_setparam(0, param)
OSError: [Errno 22] Invalid argument
--
The reason is quite simple:
http://freebsd.active-venture.com/FreeBSD-srctree/newsrc/posix4/ksched.c.html
/*
* XXX About priorities
*
* POSIX 1003.1b requires that numerically higher priorities be of
* higher priority. It also permits sched_setparam to be
* implementation defined for SCHED_OTHER. I don't like
* the notion of inverted priorites for normal processes when
* you can use setpriority for that.
*
* I'm rejecting sched_setparam for SCHED_OTHER with EINVAL.
*/
[...]
int ksched_setparam(register_t *ret, struct ksched *ksched,
struct proc *p, const struct sched_param *param)
{
register_t policy;
int e;
e = getscheduler(policy, ksched, p);
if (e == 0)
{
if (policy == SCHED_OTHER)
e = EINVAL;
else
e = ksched_setscheduler(ret, ksched, p, policy, param);
}
return e;
}
And indeed, sched_setparam is implementation-defined if the process' scheduling
policy is SCHED_OTHER, see
http://pubs.opengroup.org/onlinepubs/007908799/xsh/sched_setparam.html
If the current scheduling policy for the process specified by pid is not
SCHED_FIFO or SCHED_RR, including SCHED_OTHER, the result is
implementation-dependent.
It seems that FreeBSD made the choice of returning EINVAL, but it changed in
recent versions (the test passes on FreeBSD 8).
I'm not sure about the best solution though:
1) don't perform this test if the scheduling policy is not SCHED_RR or
SCHED_FIFO
2) skip this test on FreeBSD versions that return EINVAL (maybe adding a new
requires_freebsd_version to test.support)
--
components: Tests
messages: 142423
nosy: benjamin.peterson, neologix
priority: normal
severity: normal
stage: needs patch
status: open
title: test_posix failure on FreeBSD 6.4: test_get_and_set_scheduler_and_param
type: behavior
___
Python tracker rep...@bugs.python.org
http://bugs.python.org/issue12783
___
___
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com