Print

Print


URL:
  <http://savannah.cern.ch/bugs/?83774>

                 Summary: Memory leak: XrdSecProtocolsslInit
                 Project: XROOTD
            Submitted by: olyad
            Submitted on: 2011-06-29 08:06
                Severity: 3 - Normal
                Priority: 5 - Normal
                  Status: None
                 Privacy: Public
             Assigned to: None
        Originator Email: 
             Open/Closed: Open
         Discussion Lock: Any
      Fixed by commit(s): 

    _______________________________________________________

Details:

Good Morning,

We are currently testing raw data reconstruction with AliEn through memcheck
and dhat. There is one suspicious report (see below for memcheck and the
others at the end of message). Please advise. 

XrdSecProtocolssl:1480: XrdSecProtocolssl::CryptoMutexPool[i] = new
XrdSysMutex();

There is a new but no delete?

 10,240 bytes in 256 blocks are definitely lost in loss record 208,597 of
209,264
  at 0x4A06DC7: operator new(unsigned long) (vg_replace_malloc.c:261)
  by 0x266BA619: XrdSecProtocolsslInit (XrdSecProtocolssl.cc:1480)
  by 0x23ADFD26: XrdSecPManager::ldPO(XrdOucErrInfo*, char, char const*, char
const*, char const*) (XrdSecPManager.cc:296)
  by 0x23ADFFDD: XrdSecPManager::Get(char const*, sockaddr const&,
XrdSecBuffer&) (XrdSecPManager.cc:154)
  by 0x23ADEFA0: XrdSecGetProtocol (XrdSecClient.cc:91)
  by 0x23D29BAD: XrdClientConn::DoAuthentication(char*, int)
(XrdClientConn.cc:1706)
  by 0x23D2E5F2: XrdClientConn::DoLogin() (XrdClientConn.cc:1556)
  by 0x23D2FA2B: XrdClientConn::GetAccessToSrv() (XrdClientConn.cc:1281)
  by 0x23D58A85: XrdClientAdmin::Connect() (XrdClientAdmin.cc:189)
  by 0x2381AC77: gclient::GSIgetToken() (gclient.cxx:482)
  by 0x2381F2B4: gclient::Connect(char const*, int, char const*, char const*)
(gclient.cxx:285)
  by 0x242172E9: TAlien::TAlien(char const*, char const*, char const*, char
const*) (TAlien.cxx:164)

Thank you.

Best wishes,
Olga

This was reported by dhat: so a single allocation of 1MB, little reads and no
deaths:

 max-live:    1,048,576 in 1 blocks
 tot-alloc:   1,048,576 in 1 blocks (avg size 1048576.00)
 deaths:      none (none of these blocks were freed)
 acc-ratios:  0.00 rd, 0.25 wr  (2,382 b-read, 264,522 b-written)
    at 0x4A053AF: malloc (vg_replace_malloc.c:236)
    by 0x21D5D99C: XrdClientVector<unsigned short>::Init(int)
(XrdClientVector.hh:64)
    by 0x21D5DB78: XrdClientVector<unsigned short>::XrdClientVector(int)
(XrdClientVector.hh:139)
    by 0x21D5BCB8: XrdClientSid::XrdClientSid() (XrdClientSid.cc:25)
    by 0x21D32F17: XrdClientConnectionMgr::BootUp()
(XrdClientConnMgr.cc:188)
    by 0x21D330F1: XrdClientConnectionMgr::XrdClientConnectionMgr()
(XrdClientConnMgr.cc:162)
    by 0x21D2C19F: XrdClientConn::XrdClientConn() (XrdClientConn.cc:162)
    by 0x21D54556: XrdClientAdmin::XrdClientAdmin(char const*)
(XrdClientAdmin.cc:73)
    by 0x21815C6B: gclient::GSIgetToken() (gclient.cxx:472)
    by 0x2181A2B4: gclient::Connect(char const*, int, char const*, char
const*) (gclient.cxx:285)
    by 0x222122E9: TAlien::TAlien(char const*, char const*, char const*, char
const*) (TAlien.cxx:164)


XrdClientVector.hh:64 rawdata = static_cast<char *>(malloc(mincap *
sizeof_t));
XrdClientVector.hh:158: if (rawdata) free(rawdata);

So this is fine?

----------------------------------------------------------------
memcheck: 

 520 bytes in 13 blocks are definitely lost in loss record 206,417 of
209,264
    at 0x4A06DC7: operator new(unsigned long) (vg_replace_malloc.c:261)
    by 0x23D4462A: XrdClientPhyConnection::StartReader()
(XrdClientPhyConnection.cc:222)
    by 0x23D2FA0D: XrdClientConn::GetAccessToSrv() (XrdClientConn.cc:1278)
    by 0x23D30420: XrdClientConn::GoToAnotherServer(XrdClientUrlInfo&)
(XrdClientConn.cc:2101)
    by 0x23D32CB3: XrdClientConn::HandleServerError(XReqErrorType&,
XrdClientMessage*, ClientRequest*) (XrdClientConn.cc:1984)
    by 0x23D33A70: XrdClientConn::ReadPartialAnswer(XReqErrorType&, unsigned
long&, ClientRequest*, bool, void**, XrdClientConn::EThreeStateReadHandler&)
(XrdClientConn.cc:1120) 
    by 0x23D33C5B: XrdClientConn::ClientServerCmd(ClientRequest*, void
const*, void**, void*, bool, int) (XrdClientConn.cc:368)
    by 0x23D34361: XrdClientConn::SendGenCommand(ClientRequest*, void const*,
void**, void*, bool, char*, int) (XrdClientConn.cc:473)
    by 0x23D1AB66: XrdClient::LowOpen(char const*, unsigned short, unsigned
short, char*) (XrdClient.cc:1113)
    by 0x23D1C9E1: XrdClient::TryOpen(unsigned short, unsigned short, bool)
(XrdClient.cc:992)
    by 0x23D21086: XrdClient::Open(unsigned short, unsigned short, bool)
(XrdClient.cc:376)
    by 0x23FB38B9: TXNetFile::Open(char const*, bool) (TXNetFile.cxx:555)
    by 0x23FB4804: TXNetFile::CreateXClient(char const*, char const*, int,
bool) (TXNetFile.cxx:333)
    by 0x23FB5963: TXNetFile::TXNetFile(char const*, char const*, char
const*, int, int, bool, char const*) (TXNetFile.cxx:150)
    by 0x2421B652: TAlienFile::TAlienFile(char const*, char const*, char
const*, int, bool, char const*, char const*) (TAlienFile.cxx:57)
    by 0x2421D555: TAlienFile::Open(char const*, char const*, char const*,
int, bool) (TAlienFile.cxx:468)


XrdClientPhyConnection.cc:222: fReaderthreadhandler[i] = new
XrdClientThread(SocketReaderThread);

delete is there in the destructor. So this is an odd one:

--------------------------------------------------------------------
 2,304 bytes in 8 blocks are possibly lost in loss record 207,865 of 209,264
    at 0x4A05793: calloc (vg_replace_malloc.c:467)
    by 0x3B15610002: _dl_allocate_tls (in /lib64/ld-2.5.so)
    by 0x3B16606EB8: pthread_create@@GLIBC_2.2.5 (in
/lib64/libpthread-2.5.so)
    by 0x23AED1DD: XrdSysThread::Run(unsigned long*, void* (*)(void*), void*,
int, char const*) (XrdSysPthread.cc:283)
    by 0x23D241D7: XrdClientThread::Run(void*) (XrdClientThread.hh:54)
    by 0x23D1C7C9: XrdClient::TryOpen(unsigned short, unsigned short, bool)
(XrdClient.cc:962)
    by 0x23D21086: XrdClient::Open(unsigned short, unsigned short, bool)
(XrdClient.cc:376)
    by 0x238150AC: gclient::InternalCommand(char const*) (gclient.cxx:1001)
    by 0x2382018B: gclient::Command(char const*) (gclient.cxx:763)
    by 0x2421328D: TAlien::Command(char const*, bool, unsigned int)
(TAlien.cxx:348)




    _______________________________________________________

Reply to this item at:

  <http://savannah.cern.ch/bugs/?83774>

_______________________________________________
  Message sent via/by LCG Savannah
  http://savannah.cern.ch/