Hi, thanks for your patience. My debugging skills are (shamefully) mostly limited to putting std::cout << “test1” statements about my code, though I did learn how to use XCode Instruments for memory leak finding.
Here is lldb’s output when I list the frames, step into the one for TROOT::LoadClass and print the parameter names:
Process 54247 launched: '/Users/jfcaron/Software/custom_root/root6/root/bin/rootcling' (x86_64)
Process 54247 stopped
* thread #1: tid = 0x44bb70, 0x00000001003ec72a rootcling`TSystem::GetLibraries(this=0x0000000102e12c00, regexp=0x0000000101b941f0, options=0x0000000101b941f0, isRegexp=true) + 314 at TSystem.cxx:2023, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
frame #0: 0x00000001003ec72a rootcling`TSystem::GetLibraries(this=0x0000000102e12c00, regexp=0x0000000101b941f0, options=0x0000000101b941f0, isRegexp=true) + 314 at TSystem.cxx:2023
2020 opt.ReplaceAll("L", "");
2021
2022 if (opt.IsNull() || opt.First('D') != kNPOS)
-> 2023 libs += gInterpreter->GetSharedLibs();
2024
2025 // Cint currently register all libraries that
2026 // are loaded and have a dictionary in them, this
(lldb) bt
* thread #1: tid = 0x44bb70, 0x00000001003ec72a rootcling`TSystem::GetLibraries(this=0x0000000102e12c00, regexp=0x0000000101b941f0, options=0x0000000101b941f0, isRegexp=true) + 314 at TSystem.cxx:2023, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
* frame #0: 0x00000001003ec72a rootcling`TSystem::GetLibraries(this=0x0000000102e12c00, regexp=0x0000000101b941f0, options=0x0000000101b941f0, isRegexp=true) + 314 at TSystem.cxx:2023
frame #1: 0x00000001003eac0a rootcling`TSystem::Load(this=0x0000000102e12c00, module=0x000000010380d900, entry=0x0000000000000000, system=true) + 106 at TSystem.cxx:1765
frame #2: 0x00000001004bfe2f rootcling`TUnixSystem::Load(this=0x0000000102e12c00, module=0x000000010380d900, entry=0x0000000000000000, system=true) + 63 at TUnixSystem.cxx:2668
frame #3: 0x00000001003bf170 rootcling`TROOT::LoadClass(this=0x0000000101e189a9, (null)=0x0000000101b57651, libname=0x0000000101b57659, check=false) + 400 at TROOT.cxx:1815
frame #4: 0x00000001003ba0b5 rootcling`TROOT::InitThreads(this=0x0000000101e189a9) + 165 at TROOT.cxx:1627
frame #5: 0x00000001003b93cc rootcling`TROOT(this=0x0000000101e189a9, name=0x0000000101b52d5a, title=0x0000000101b5797f, initfunc=0x0000000000000000) + 6988 at TROOT.cxx:562
frame #6: 0x00000001003b786d rootcling`TROOT(this=0x0000000101e189a9, name=0x0000000101b52d5a, title=0x0000000101b5797f, initfunc=0x0000000000000000) + 45 at TROOT.cxx:573
frame #7: 0x00000001003c3664 rootcling`TROOTAllocator(this=0x0000000101e189a9) + 84 at TROOT.cxx:286
frame #8: 0x00000001003c2795 rootcling`TROOTAllocator(this=0x0000000101e189a9) + 21 at TROOT.cxx:287
frame #9: 0x00000001003b6b59 rootcling`ROOT::GetROOT1() + 89 at TROOT.cxx:299
frame #10: 0x00000001003b74ba rootcling`ROOT::GetROOT() + 10 at TROOT.cxx:313
frame #11: 0x00000001003c2719 rootcling`__cxx_global_var_init1 + 9 at TROOT.cxx:321
frame #12: 0x00000001003c276e rootcling`_GLOBAL__I_a + 14 at TROOT.cxx:158
frame #13: 0x00007fff5fc11c2e
frame #14: 0x00007fff5fc11dba
frame #15: 0x00007fff5fc0ea62
frame #16: 0x00007fff5fc0e8f6
frame #17: 0x00007fff5fc021da
frame #18: 0x00007fff5fc05560
frame #19: 0x00007fff5fc0127b
frame #20: 0x00007fff5fc0105e
(lldb) fr s 3
frame #3: 0x00000001003bf170 rootcling`TROOT::LoadClass(this=0x0000000101e189a9, (null)=0x0000000101b57651, libname=0x0000000101b57659, check=false) + 400 at TROOT.cxx:1815
1812 if (check)
1813 err = 0;
1814 else {
-> 1815 err = gSystem->Load(path, 0, kTRUE);
1816 }
1817 delete [] path;
1818 } else {
(lldb) print libname
(const char *) $0 = 0x0000000101b57659 "Thread"
(lldb) print path
(char *) $1 = 0x000000010380d900 "/Users/jfcaron/Software/custom_root/compiled/lib/root/libThread.so"
So it looks like it’s libThread. I poked around the other frames and it’s all libThread.
I also tried compiling from the tarball (again, just “make” without -j N (for N > 1) failed), but unfortunately the result is the same. There is a segfault when running TROOT::LoadClass.
Jean-François