Print

Print


Folks,

There are two bugs in src/XrdXr/XrdXrClient.cc that causes xrclient to 
dump core if you run the logout command.  The client->logout() call 
deletes worker but does not set it to 0. Then when client is deleted, 
it unconditionally deletes the worker again.  The simple fixes are

1. in the method XrdXrClient::logout()
    if (rc == 0) {
       delete worker;
//ADD THE NEXT LINE
       worker = 0;
       TRACE(Logout, "logout ok.");
     }

2. in the destructor ~XrdXrClient() change the "delete worker" to
     if (worker) { delete worker; }

One might argue for a review of the logout code deleting the worker, 
but these changes stop the core dumps.

--
Gregory J. Sharp                   email: [log in to unmask]
Wilson Synchrotron Laboratory      url: 
http://www.lepp.cornell.edu/~gregor
Dryden Rd                          ph:  +1 607 255 4882
Ithaca, NY 14853                   fax: +1 607 255 8062