Greetings.

I have been noticing this bug for awhile. When making copies from
multiple servers. After all the copies from the multiple servers have
been completed, cf-agent will seg fault:

cf3 Existing connection just became free...

Segmentation fault in ServerDisconnection at line 195 in file
"/mnt/cfengine-svn/trunk/src/client_code.c" ($t1)
  195      close(conn->sd);

Then conn structure seems to get corrupted in CacheServerConnection
(client_code.c):

for (rp = SERVERLIST; rp != NULL; rp=rp->next)
   {
   svp = (struct ServerItem *)rp->item;
   conn = svp->conn;

   if (strcmp(ipname,conn->localip) == 0)
      {
      conn->sd = CF_COULD_NOT_CONNECT;
      return;
      }
   }

I am not sure of the purpose of this code segment, but is appears to
be damaging. If someone else could please take a look at it. I need a
second pair of eyes on this one.

Also, in the same function:

rp = PrependRlist(&SERVERLIST,"nothing",CF_SCALAR);
free(rp->item);
svp = (struct ServerItem *)malloc((sizeof(struct ServerItem)));
rp->item = svp;
svp->server = strdup(ipname);
svp->conn = conn;

shouldn't you add a:

svp->busy=false

as well? I happened to stumble across this as a host want
inadvertently marked busy, when it wasn't. Seems the busy was never
set.
_______________________________________________
Bug-cfengine mailing list
Bug-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/bug-cfengine

Reply via email to