Greeetings. I believe I have found a bug in cf-serverd for AIX. In
StartServer (server.c):
struct Attributes dummyattr;
dummyattr comes prefilled with garbage, which affects locking later in
AcquireLock (transactions.c):
if (elapsedtime < attr.transaction.ifelapsed)
{
CfOut(cf_verbose,""," XX Nothing promised here [%.30s] (%u/%u minutes
elapsed)\n",cflock,elapsedtime,attr.transaction.ifelapsed);
return this;
}
In the debugger:
(dbx) stop in AcquireLock
[1] stop in AcquireLock
(dbx) run
[1] stopped in AcquireLock at line 59 in file "transaction.c" ($t1)
59 int i, err, sum=0;
(dbx) p attr.transaction.ifelapsed
538233276
(dbx) p attr.transaction.expireafter
-801911168
The proposed change I have is to zero-out dummyattr in StartServer:
void StartServer(int argc,char **argv)
{ char ipaddr[CF_MAXVARSIZE],intime[64];
int sd,sd_reply;
fd_set rset;
time_t now;
struct timeval timeout;
int ret_val;
struct Promise *pp = NewPromise("server_cfengine","the server daemon");
struct Attributes dummyattr;
struct CfLock thislock;
/* initialize dummyattr */;
memset(&dummyattr,0,sizeof(dummyattr));
In the debugger after the memset:
(dbx) stop in AcquireLock
[1] stop in AcquireLock
(dbx) run
[1] stopped in AcquireLock at line 59 in file "transaction.c" ($t1)
59 int i, err, sum=0;
(dbx) p attr.transaction.ifelapsed
0
(dbx) p attr.transaction.expireafter
0
Yay, pretty.
_______________________________________________
Bug-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/bug-cfengine