You are absolutely correct. I didn't notice I did that. I guess my next question on how to do what I am trying to do need to go help-cfengine. Sorry about the red herring. I will be more careful next time.
On Thu, Mar 26, 2009 at 10:37 AM, Mark Burgess <mark.burg...@iu.hio.no>wrote: > > Note that you are passing a scalar reference to a list $(hlist) rather > than a @(hlist) reference. Since you don't show your body reference I > can't tell if this is the problem. Of course, the program should not > crash but I can see why it would... > > Matt Richards wrote: > > Greetings. I seem to have found a bug in cf-agent. When connecting to > > multiple hosts: > > > > vars: > > > > hlist slist => { "hosta", "hostb" }; > > > > files: > > > > "$(location)/$(hlist)" > > copy_from => server_copy("$(location)","$(hlist)"), > > perms => system("640"), > > depth_search => recurse("inf"), > > action => immediate; > > > > Debugging the code, I tracked back the dump to the initial corruption - > > cached server connections, (CacheServerConnection:client_code.c): > > > > for (rp = SERVERLIST; rp != NULL; rp=rp->next) > > { > > conn = (struct cfagent_connection *) rp->item; > > if (strcmp(ipname,conn->localip) == 0) > > { > > conn->sd = CF_COULD_NOT_CONNECT; > > return; > > } > > } > > > > assigning conn = (struct cfagent_connection *) rp->item; messes up the > > connection structure. I am not sure why this section of code is actually > > in there, but the type casting seems to be causing some corruption. > > Note, that it only happens on the second host (since SERVERLIST is NULL > > on the first server). > > > > debugging output: > > > > stopped in CacheServerConnection at line 1238 in file > > "/mnt/cfengine-3.0.1b5.patched/src/client_code.c" ($t1) > > 1238 for (rp = SERVERLIST; rp != NULL; rp=rp->next) > > (dbx) p *conn > > (sd = 5, trust = 0, authenticated = 1, protoversion = 0, family = 2, > > localip = "9.61.13.23", remoteip = "9.61.251.15", session_key = " > > ^Ub^H", error = 0) > > (dbx) n > > stopped in CacheServerConnection at line 1240 in file > > "/mnt/cfengine-3.0.1b5.patched/src/client_code.c" ($t1) > > 1240 conn = (struct cfagent_connection *)rp->item; > > (dbx) p *(struct cfagent_connection *)rp->item > > (sd = 538267672, trust = 538267384, authenticated = 0, protoversion = 0, > > family = 0, localip = "", remoteip = "", session_key = "", error = 12131) > > (dbx) n > > stopped in CacheServerConnection at line 1241 in file > > "/mnt/cfengine-3.0.1b5.patched/src/client_code.c" ($t1) > > 1241 if (strcmp(ipname,conn->localip) == 0) > > (dbx) p *conn > > (sd = 538267672, trust = 538267384, authenticated = 0, protoversion = 0, > > family = 0, localip = "", remoteip = "", session_key = "", error = 12131) > > > > At this point, conn is really messed up. > > > > (dbx) where > > CacheServerConnection(conn = 0x20154fe8, server = "xxx"), line 1241 in > > "client_code.c" > > NewServerConnection(attr = (...), pp = 0x20154968), line 107 in > > "client_code.c" > > ScheduleCopyOperation(destination = "xxx", attr = (...), pp = > > 0x20154968), line 177 in "files_operators.c" > > VerifyFilePromise(path = "xxx", pp = 0x20154968), line 314 in > > "files_interfaces.c" > > FindFilePromiserObjects(pp = 0x20154968), line 61 in "verify_files.c" > > FindAndVerifyFilesPromises(pp = 0x20154968), line 37 in "verify_files.c" > > KeepAgentPromise(pp = 0x20154968), line 814 in "agent.c" > > ExpandPromiseAndDo(agent = cf_agent, scopeid = "xxx", pp = 0x20153d38, > > scalarvars = 0x20154598, listvars = 0x201545d8, fnptr = 0x20051f30), > > line 593 in "expand.c" > > ExpandPromise(agent = cf_agent, scopeid = "xxx", pp = 0x2015d268, fnptr > > = 0x20051f30), line 115 in "expand.c" > > ScheduleAgentOperations(bp = 0x2015cab8), line 670 in "agent.c" > > KeepPromiseBundles(), line 634 in "agent.c" > > KeepPromises(), line 273 in "agent.c" > > main(argc = 2, argv = 0x2ff22a00), line 131 in "agent.c" > > > > Thanks, > > Matt > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------------ > > > > _______________________________________________ > > Bug-cfengine mailing list > > Bug-cfengine@cfengine.org > > https://cfengine.org/mailman/listinfo/bug-cfengine > > -- > Mark Burgess > > ------------------------------------------------- > Professor of Network and System Administration > Oslo University College, Norway > > Personal Web: http://www.iu.hio.no/~mark <http://www.iu.hio.no/%7Emark> > Office Telf : +47 22453272 > ------------------------------------------------- >
_______________________________________________ Bug-cfengine mailing list Bug-cfengine@cfengine.org https://cfengine.org/mailman/listinfo/bug-cfengine