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/