bug-cfengine
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: fix for a bug in cfservd v2.1.11 (was Re: cfpclose() or "packages: u


From: Mark Burgess
Subject: Re: fix for a bug in cfservd v2.1.11 (was Re: cfpclose() or "packages: under cfrun only" bug on RHEL3?)
Date: Thu, 24 Feb 2005 21:05:15 +0100
User-agent: Internet Messaging Program (IMP) 3.2.2

I don't understand why you ae patching 2.1.11 when we are up to 2.1.13 
and then some. Hvae you verified that this perists in 2.1.13?

There was a lot of trouble with patches I received claiming to fix 
problems, This bug was fixed a while ago. Please upgrade,
M

Quoting address@hidden:

> 
> Mark:
> 
> Dan--my systems programmer guru--and I just spent a few hours with
> this.  It appears that cfservd version 2.1.11 introduces a change
> where it ignores SIGCHLD, which in turn gets inherited by cfagent.
> This, in turn, causes cfpclose() to fail it's waitpid() because
> zombie processes get automatically removed by (at least some)
> Linux kernels when SIGCHLD is set to SIG_IGN.
> 
> Refer to the proof of concept code after my sig.  I have verified
> that the problem exists on RedHat7.3, RedHat9, RHEL3 and FC3.
> Remove the signal() call, call it "cfagent", and can you can verify
> the problem with cfservd.
> 
> Please consider removing the "signal(SIGCHLD,SIG_IGN)" line from
> cfservd.c because it makes all code that calls cfpclose() fail when
> ran under cfrun.
> 
> Or perhaps restore SIGCHLD to the default handler in the child
> branch of the fork() in cfpopen() in popen.c?
> 
> The ChangeLog for 2.1.11 reads
> 
>      SIGPIPE and SIGCHLD added to signal handler (SIGCHILD ignored against
> posix, but
>      how the hell do you sort this out?)
> 
> but it does not explain *why* cfservd now ignores SIGCHLD and
> SIGPIPE?
> 
> steve 
> - - - 
> systems & network manager
> high energy physics
> university of wisconsin
> 
> #include "stdio.h"
> #include <sys/types.h>
> #include <unistd.h>
> #include <errno.h>
> #include "signal.h"
> 
> extern int errno;
> 
> main () {
> 
>   int pid;
> 
>   signal(SIGCHLD,SIG_IGN); /* HERE causes waitpid() failure on some Linux
> kernels */ 
> 
>   pid = fork();
> 
>   if ( pid == 0 ) {
>     /* become a zombie */
>     exit(0);
>   } else {
>     int rc, status;
>     sleep(5);
>     rc = waitpid(pid,&status,0);
>     printf("waitpid said %d\n",rc);
>     if ( rc == -1 ) {
>       printf("waitpid failed: %s\n",strerror(errno));
>     }
>   }
> 
> }
> 
>  > ---- Original Message ----
>  > From: rader
>  > 
>  > Has anyone noticed that packages actions work via cfagent but
>  > always return "not installed" via cfrun??  I'm seeing this problem
>  > with Dag's 2.1.11 on Scientific Linux 3.0.4 (recompiled RHEL3.)
>  > Details follow my sig.
>  > 
>  > Looks like RPMPackageCheck() fires off "rpm -q ..." via cfpopen()
>  > and then cfpclose() is failing--but only under cfrun.
>  > 
>  > ?
>  > 
>  > steve 
>  > - - - 
>  > systems & network manager
>  > high energy physics
>  > university of wisconsin
>  > - - - 
>  > 
>  > I have...
>  > 
>  >   [...]
>  >   DefaultPkgMgr = ( rpm )
>  >   [...]
>  >   packages:
>  >     beebalm::
>  >       compat-slang version=0:1.4.5-5 cmp=ge 
>  >         define=has_compat_slang elsedefine=do_compat_slang
>  >   shellcommands:
>  >     do_compat_slang::
>  >        "/bin/echo NEEDS compat-slang"
>  >     has_compat_slang::
>  >        "/bin/echo HAS compat-slang"
>  > 
>  > and on beebalm I do
>  > 
>  >  sudo cfagent -d0 --no-splay 
>  > 
>  > and I get
>  > 
>  >  cfpopen(/bin/rpm -q --queryformat "%{EPOCH}:%{VERSION}-%{RELEASE}\n"
> comp
>  > at-slang)
>  >  Appending [(none):1.4.5-5]
>  >  cfpclose(pp)
>  >  cfpopen - Waiting for process 16986
>  >  RPMCheckPackage(): Requested compat-slang ge 0:1.4.5-5
>  >  RPMCheckPackage(): Trying installed version 0:1.4.5-5
>  >  Comparison result: eq
>  > 
>  > okay, cool, but when I do 
>  > 
>  >  sudo cfrun beebalm -- -d0 --nosplay
>  > 
>  > I get
>  > 
>  >  cfpopen(/bin/rpm -q --queryformat "%{EPOCH}:%{VERSION}-%{RELEASE}\n"
> comp
>  > at-slang)
>  >  Appending [(none):1.4.5-5]
>  >  cfpclose(pp)
>  >  cfpopen - Waiting for process 17039
>  >  RPM Package compat-slang not installed.
>  > 
>  > 
>  > 
>  > _______________________________________________
>  > Bug-cfengine mailing list
>  > address@hidden
>  > http://lists.gnu.org/mailman/listinfo/bug-cfengine
> 
> 


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Work: +47 22453272            Email:  address@hidden
Fax : +47 22453205            WWW  :  http://www.iu.hio.no/~mark
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]