On Mon, 8 Jul 2002, Wichert Akkerman wrote:
> Previously Stephen J. Turnbull wrote:
> > SigInit: setpgid failed (1)
>
> Can you try and figure out why setpgid fails? If 1 is the errno the
> reason would be EPERM, which means the bug is not in start-stop-daemon.
Yes, the 1 is an errno, the code is:
void SigInit(void)
{
/* Establish/Join our own process group to avoid extraneous signals. */
#ifndef DJGPP
if (setpgid(0, 0) < 0)
CHOKE("SigInit: setpgid failed (%d)", errno);
#endif /* !DJGPP */
.
.
On Mon, 12 Jul 2002, Adam Heath wrote:
> Er, maybe. s-s-d in 1.10 now uses setsid(), instead of setpgid()(this is
> detected at compile time). Is setpgid() not allowed to be called after
> setsid() has been?
That seems to be the problem. From setsid(2):
ERRORS
On error, -1 will be returned. The only error which can
happen is EPERM. It is returned when the process group ID
of any process equals the PID of the calling process.
Thus, in particular, setsid fails if the calling process
is already a process group leader.
However setpgid(2) states:
DESCRIPTION
setpgid sets the process group ID of the process specified
by pid to pgid. If pid is zero, the process ID of the
current process is used. If pgid is zero, the process ID
of the process specified by pid is used. [...]
When setpgid(0, 0) is called (like venus does) it seems to crash
because the pgid is already set to the pid...
CU
Thimo
--
Thimo Neubauer <thimo@debian.org>
Debian GNU/Linux 3.0 "woody" is finally released! CD-Images are
available via http://cdimage.debian.org/, for detailed information
about Debian see http://www.debian.org/
Attachment:
pgpRwM3Wo1PGz.pgp
Description: PGP signature