I'm just glad it worked out

Matt Richards wrote:
> 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 <[email protected]
> <mailto:[email protected]>> 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
>     > [email protected] <mailto:[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 <http://www.iu.hio.no/%7Emark>
>     Office Telf : +47 22453272
>     -------------------------------------------------
> 
> 

-- 
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

Reply via email to