We're using cfengine-2.1.21, and I see that this bug seems to exist in that codebase as well, however I'm not sure whether we've ever encountered it.
In your experience, is the hang on "zero-hashed" macro names random, or will it occur every run of cfagent if a "zero-hashed" macro name exists? Paul Krizak 7171 Southwest Pkwy MS B200.3A Senior Systems Engineer Austin, TX 78735 Advanced Micro Devices Desk: (512) 602-8775 Linux/Unix Systems Engineering Cell: (512) 791-0686 Global IT Infrastructure Fax: (512) 602-0468 On 04/12/10 09:31, fo...@cfengine.com wrote: > Forum: Cfengine Help > Subject: Possible bug in cfengine 2 > Author: kevinmusker > Link to topic: https://cfengine.com/forum/read.php?3,16863,16863#msg-16863 > > We are currently using cfengine 2.2.8 to manage a bunch of FreeBSD boxes. > Last week we made some configuration changes which led to cfagent hanging > while trying to parse the cf files. We managed to track it down to the > addition of a variable named 'voip_group'. In order to deploy the changes, we > renamed the variable. > > This seems to have been caused by a bug in the GetMacroValue function defined > in macro.c. The string 'voip_group' hashes to the value 0 (zero), meaning > that the while loop never exits if the variable isn't defined in the > hashtable associated with the current scope (in our case, it was hangnig > while searching for the variable in the 'main' scope). The reason I say that > it _seems_ to have been caused by a bug is that, if my assumptions are > correct, it has a 1 in 4969 chance of being triggered for any given variable > name. > > Below is a patch which fixed the problem for us. Although we are not using > the latest version of cfengine 2, the bug is present in the latest version of > macro.c in VC. > > > --- src/macro.c.orig 2007-08-19 16:27:48.000000000 +0100 > +++ src/macro.c 2010-04-09 14:45:37.000000000 +0100 > @@ -380,6 +380,10 @@ > > if (i>= CF_HASHTABLESIZE-1) > { > + if (slot == 0) > + { > + return(getenv(vname)); > + } > i = 0; > } > > > > Has anybody else experienced a similar problem? > > _______________________________________________ > Help-cfengine mailing list > Help-cfengine@cfengine.org > https://cfengine.org/mailman/listinfo/help-cfengine > _______________________________________________ Help-cfengine mailing list Help-cfengine@cfengine.org https://cfengine.org/mailman/listinfo/help-cfengine