On Tue, Jan 09, 2007 at 07:19:29PM +0300, Alexei Sheplyakov wrote: > chpst -n seems to always sets the nice value to 19 on x86_64, no > matter what argument has been given: > > $ chpst -n 5 ps -l > F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD > 0 S 1000 11267 10824 0 75 0 - 2634 - pts/7 00:00:00 bash > 0 R 1000 11742 11267 0 97 19 - 1892 - pts/7 00:00:00 ps > > On the other hand, chpst works just fine on x86: > > [on the x86 box] > $ chpst -n 5 ps -l > F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD > 0 S 1000 14282 23386 4 75 0 - 2928 - pts/3 00:00:00 bash > 0 R 1000 5586 14282 0 82 5 - 1827 - pts/3 00:00:00 ps > > > [on the x86_64 box] > $ strace -f chpst -n 5 /bin/true 2>&1 | head -n 5 > execve("/usr/bin/chpst", ["chpst", "-n", "5", "/bin/true"], [/* 68 vars */]) > = 0 > getpriority(PRIO_PROCESS, 0) = 20 > setpriority(PRIO_PROCESS, 0, 25) = 0 > getpriority(PRIO_PROCESS, 0) = 1 > execve("/bin/true", ["/bin/true"], [/* 68 vars */]) = 0 > > On Linux, "getpriority()" will not return the normal nice-value, but > a negated value that has been offset by 20 (ie it returns 40..1 instead > of -20..19) to avoid negative return values. > > On the other hand, "setpriority" accepts _regular_ nice value in the > range -20..19. chpst seems to ignore this difference and sets wrong > nice value as a result.
Thanks for the report, Alexei. > x86 is not affected since chpst uses "nice" system call here: The bug actually is in the dietlibc; not in runit's chpst, which uses nice() on all archs. Regards, Gerrit. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]