Details

    • Type: Bug
    • Status: New
    • Priority: Not specified
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: Dali
    • Labels:
      None

      Description

      Running Helgrind on eclagent reported the following which might be worth investigating:

       

      ==16649== Thread #50: lock order "0xD31A210 before 0xD23D2A8" violated
      ==16649== 
      ==16649== Observed (incorrect) order is: acquisition of lock at 0xD23D2A8
      ==16649==    at 0x4C321BC: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
      ==16649==    by 0x4F904AE: CriticalSection::enter() (jmutex.hpp:300)
      ==16649==    by 0x4F905C1: CriticalBlock::CriticalBlock(CriticalSection&) (jmutex.hpp:341)
      ==16649==    by 0x7259A7C: CClientSDSManager::commit(CRemoteConnection&, bool*) (dacsds.cpp:1572)
      ==16649==    by 0x725F60B: CRemoteConnection::beforeDispose() (dacsds.ipp:46)
      ==16649==    by 0x561F31B: CInterfaceOf<CEmptyClass>::Release() const (jiface.hpp:135)
      ==16649==    by 0x561F221: CInterface::Release() const (jiface.cpp:33)
      ==16649==    by 0x725F591: CRemoteConnection::Release() const (dacsds.ipp:37)
      ==16649==    by 0x4FE47DD: void Release<IRemoteConnection>(IRemoteConnection*) (in /home/gavin/hpcc/opt/HPCCSystems/lib/libhthor.so)
      ==16649==    by 0x4FE2E44: Shared<IRemoteConnection>::~Shared() (jscm.hpp:62)
      ==16649==    by 0x4FDEA7B: Owned<IRemoteConnection>::~Owned() (jscm.hpp:99)
      ==16649==    by 0x72A964F: CDistributedFileBase<IDistributedFile>::~CDistributedFileBase() (dadfs.cpp:2717)
      ==16649== 
      ==16649==  followed by a later acquisition of lock at 0xD31A210
      ==16649==    at 0x4C321BC: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
      ==16649==    by 0x4F904AE: CriticalSection::enter() (jmutex.hpp:300)
      ==16649==    by 0x725F941: CConnectionLock::CConnectionLock(CRemoteConnection&) (dacsds.ipp:120)
      ==16649==    by 0x72557A0: CClientRemoteTree::_checkChildren() (dacsds.cpp:736)
      ==16649==    by 0x7255765: CClientRemoteTree::checkChildren() const (dacsds.cpp:731)
      ==16649==    by 0x565A4CE: PTree::getElements(char const*, unsigned int) const (jptree.cpp:2058)
      ==16649==    by 0x7256DAA: CClientRemoteTree::getElements(char const*, unsigned int) const (dacsds.cpp:1060)
      ==16649==    by 0x7257AAF: CClientRemoteTree::collateData() (dacsds.cpp:1180)
      ==16649==    by 0x7259B5A: CClientSDSManager::commit(CRemoteConnection&, bool*) (dacsds.cpp:1589)
      ==16649==    by 0x725F60B: CRemoteConnection::beforeDispose() (dacsds.ipp:46)
      ==16649==    by 0x561F31B: CInterfaceOf<CEmptyClass>::Release() const (jiface.hpp:135)
      ==16649==    by 0x561F221: CInterface::Release() const (jiface.cpp:33)
      ==16649== 
      ==16649== Required order was established by acquisition of lock at 0xD31A210
      ==16649==    at 0x4C321BC: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
      ==16649==    by 0x4F904AE: CriticalSection::enter() (jmutex.hpp:300)
      ==16649==    by 0x725F941: CConnectionLock::CConnectionLock(CRemoteConnection&) (dacsds.ipp:120)
      ==16649==    by 0x725327A: CRemoteConnection::commit() (dacsds.cpp:338)
      ==16649==    by 0x7278F33: CFileLockBase::~CFileLockBase() (dadfs.cpp:459)
      ==16649==    by 0x7288BD9: CFileSubLock::~CFileSubLock() (dadfs.cpp:531)
      ==16649==    by 0x7288C11: CFileAttrLock::~CFileAttrLock() (dadfs.cpp:555)
      ==16649==    by 0x7288ED0: CDistributedFile::setAccessedTime(CDateTime const&) (dadfs.cpp:4547)
      ==16649==    by 0x7288F6E: CDistributedFile::setAccessed() (dadfs.cpp:4574)
      ==16649==    by 0x4F824A5: CHThorDiskReadBaseActivity::close() (hthor.cpp:8232)
      ==16649==    by 0x4F857BE: CHThorDiskReadActivity::nextRow() (hthor.cpp:8775)
      ==16649==    by 0x4F924E9: IHThorInput::nextRow() (hthor.hpp:62)
      ==16649== 
      ==16649==  followed by a later acquisition of lock at 0xD23D2A8
      ==16649==    at 0x4C321BC: ??? (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
      ==16649==    by 0x4F904AE: CriticalSection::enter() (jmutex.hpp:300)
      ==16649==    by 0x4F905C1: CriticalBlock::CriticalBlock(CriticalSection&) (jmutex.hpp:341)
      ==16649==    by 0x7259A7C: CClientSDSManager::commit(CRemoteConnection&, bool*) (dacsds.cpp:1572)
      ==16649==    by 0x725330B: CRemoteConnection::commit() (dacsds.cpp:340)
      ==16649==    by 0x7278F33: CFileLockBase::~CFileLockBase() (dadfs.cpp:459)
      ==16649==    by 0x7288BD9: CFileSubLock::~CFileSubLock() (dadfs.cpp:531)
      ==16649==    by 0x7288C11: CFileAttrLock::~CFileAttrLock() (dadfs.cpp:555)
      ==16649==    by 0x7288ED0: CDistributedFile::setAccessedTime(CDateTime const&) (dadfs.cpp:4547)
      ==16649==    by 0x7288F6E: CDistributedFile::setAccessed() (dadfs.cpp:4574)
      ==16649==    by 0x4F824A5: CHThorDiskReadBaseActivity::close() (hthor.cpp:8232)
      ==16649==    by 0x4F857BE: CHThorDiskReadActivity::nextRow() (hthor.cpp:8775)
      ==16649== 
      ==16649==  Lock at 0xD31A210 was first observed
      ==16649==    at 0x4C360BA: pthread_mutex_init (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
      ==16649==    by 0x4F90409: CriticalSection::CriticalSection() (jmutex.hpp:282)
      ==16649==    by 0x7252058: CRemoteConnection::CRemoteConnection(ISDSConnectionManager&, long long, char const*, long long, unsigned int, unsigned int) (dacsds.cpp:161)
      ==16649==    by 0x725AB70: CClientSDSManager::connect(char const*, long long, unsigned int, unsigned int) (dacsds.cpp:1774)
      ==16649==    by 0x7278D7D: CFileLockBase::init(char const*, unsigned int, IRemoteConnection*, unsigned int, char const*) (dadfs.cpp:433)
      ==16649==    by 0x72791AA: CFileLock::init(CDfsLogicalFileName const&, unsigned int, unsigned int, char const*) (dadfs.cpp:502)
      ==16649==    by 0x72680C8: CDistributedFileDirectory::dolookup(CDfsLogicalFileName&, IUserDescriptor*, bool, bool, bool, IDistributedFileTransaction*, unsigned int) (dadfs.cpp:7456)
      ==16649==    by 0x72687F3: CDistributedFileDirectory::lookup(CDfsLogicalFileName&, IUserDescriptor*, bool, bool, bool, IDistributedFileTransaction*, unsigned int) (dadfs.cpp:7526)
      ==16649==    by 0x73259C1: CLocalOrDistributedFile::init(char const*, IUserDescriptor*, bool, bool, bool) (dautils.cpp:3091)
      ==16649==    by 0x732076D: createLocalOrDistributedFile(char const*, IUserDescriptor*, bool, bool, bool) (dautils.cpp:3246)
      ==16649==    by 0x4FCBD7D: EclAgent::resolveLFN(char const*, char const*, bool, bool, bool, StringBuffer*) (eclagent.cpp:1396)
      ==16649==    by 0x4FF171F: IndirectAgentContext::resolveLFN(char const*, char const*, bool, bool, bool, StringBuffer*) (eclagent.ipp:172)
      ==16649==  Address 0xd31a210 is 112 bytes inside a block of size 184 alloc'd
      ==16649==    at 0x4C2F50F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
      ==16649==    by 0x725AB2A: CClientSDSManager::connect(char const*, long long, unsigned int, unsigned int) (dacsds.cpp:1774)
      ==16649==    by 0x7278D7D: CFileLockBase::init(char const*, unsigned int, IRemoteConnection*, unsigned int, char const*) (dadfs.cpp:433)
      ==16649==    by 0x72791AA: CFileLock::init(CDfsLogicalFileName const&, unsigned int, unsigned int, char const*) (dadfs.cpp:502)
      ==16649==    by 0x72680C8: CDistributedFileDirectory::dolookup(CDfsLogicalFileName&, IUserDescriptor*, bool, bool, bool, IDistributedFileTransaction*, unsigned int) (dadfs.cpp:7456)
      ==16649==    by 0x72687F3: CDistributedFileDirectory::lookup(CDfsLogicalFileName&, IUserDescriptor*, bool, bool, bool, IDistributedFileTransaction*, unsigned int) (dadfs.cpp:7526)
      ==16649==    by 0x73259C1: CLocalOrDistributedFile::init(char const*, IUserDescriptor*, bool, bool, bool) (dautils.cpp:3091)
      ==16649==    by 0x732076D: createLocalOrDistributedFile(char const*, IUserDescriptor*, bool, bool, bool) (dautils.cpp:3246)
      ==16649==    by 0x4FCBD7D: EclAgent::resolveLFN(char const*, char const*, bool, bool, bool, StringBuffer*) (eclagent.cpp:1396)
      ==16649==    by 0x4FF171F: IndirectAgentContext::resolveLFN(char const*, char const*, bool, bool, bool, StringBuffer*) (eclagent.ipp:172)
      ==16649==    by 0x4F589F9: resolveLFNFlat(IAgentContext&, char const*, char const*, bool) (hthor.cpp:162)
      ==16649==    by 0x4F817FC: CHThorDiskReadBaseActivity::resolve() (hthor.cpp:8112)
      ==16649==  Block was alloc'd by thread #1
      ==16649== 
      ==16649==  Lock at 0xD23D2A8 was first observed
      ==16649==    at 0x4C360BA: pthread_mutex_init (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
      ==16649==    by 0x4F90409: CriticalSection::CriticalSection() (jmutex.hpp:282)
      ==16649==    by 0x7258179: CClientSDSManager::CClientSDSManager() (dacsds.cpp:1252)
      ==16649==    by 0x725CE5D: querySDS() (dacsds.cpp:2231)
      ==16649==    by 0x7249EE5: CSDSServerStatus::CSDSServerStatus(char const*) (daclient.cpp:168)
      ==16649==    by 0x4FD820A: eclagent_main(int, char const**, StringBuffer*, bool) (eclagent.cpp:3459)
      ==16649==    by 0x401FF5: main (eclagentmain.cpp:79)
      ==16649==  Address 0xd23d2a8 is 120 bytes inside a block of size 312 alloc'd
      ==16649==    at 0x4C2F50F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so)
      ==16649==    by 0x725CE52: querySDS() (dacsds.cpp:2231)
      ==16649==    by 0x7249EE5: CSDSServerStatus::CSDSServerStatus(char const*) (daclient.cpp:168)
      ==16649==    by 0x4FD820A: eclagent_main(int, char const**, StringBuffer*, bool) (eclagent.cpp:3459)
      ==16649==    by 0x401FF5: main (eclagentmain.cpp:79)
      ==16649==  Block was alloc'd by thread #1
      ==16649== 
      ==16649== 
      
      

      I don't know if it is at all significant.

       

        Attachments

          Activity

            People

            • Assignee:
              jakesmith Jake Smith
              Reporter:
              ghalliday Gavin Halliday
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated: