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
> [email protected]
> 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
Office Telf : +47 22453272
-------------------------------------------------
_______________________________________________
Bug-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/bug-cfengine