setpgid() fails for init child

Eric Buddington (snikt@resounding.com)
Fri, 30 Jun 2000 15:01:11 -0400


I'm trying to get init to start processes using sucap, and getting the
error "Failed to set process group: Operation not permitted", indicating
that the call 'setpgid(0, getpid())' failed.

The command in question is:

sucap syslogd syslogd cap_net_bind_service=eip syslogd -n -f /etc/syslogd.conf

When the exact command is run from a root shell, the error does not
occur (syslogd runs).

When the command is changed to "strace sucap...", the error does not occur.

When the command is wrapped in 'bash -c "sucap..."', it fails, unless the
output is redirected, in which case it works.

The salient difference I see is that it fails exactly when
(getpgid() != getppid() before the call to setpgid(). I don't
understand all the tests in sys.c, unfortunately, though by process
of elimination it must be the 'if (p->leader)' test at kernel.sys:798.

Is there some reason for this behaviour, or is it a bug?

I am happy to test theories or get educated...

-Eric

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/