TBrowser Fails to Open

Hi,

I just updated my macbook to the latest version of OS X (High Sierra version 10.13.1) and my installation of root (version 5.34/36) now wont let me open a TBrowser. I get the following error:

root [3] TBrowser a
dlopen error: dlopen(/Users/John/ROOT/lib/libRIO.so, 9): can't resolve symbol __ZTVN10__cxxabiv117__class_type_infoE in /Users/John/ROOT/lib/libThread.so because dependent dylib #3 could not be loaded in /Users/John/ROOT/lib/libThread.so
Load Error: Failed to load Dynamic link library /Users/John/ROOT/lib/libRIO.so
Error in <TCint::AutoLoad>: failure loading dependent library libGraf.so for class TPad
dlopen error: dlopen(/Users/John/ROOT/lib/libGraf.so, 9): can't resolve symbol __ZTVN10__cxxabiv117__class_type_infoE in /Users/John/ROOT/lib/libThread.so because dependent dylib #3 could not be loaded in /Users/John/ROOT/lib/libThread.so
Load Error: Failed to load Dynamic link library /Users/John/ROOT/lib/libGraf.so
Error in <TCint::AutoLoad>: failure loading library libGpad.so for class TPad
dlopen error: dlopen(/Users/John/ROOT/lib/libGpad.so, 9): can't resolve symbol __ZTVN10__cxxabiv117__class_type_infoE in /Users/John/ROOT/lib/libThread.so because dependent dylib #3 could not be loaded in /Users/John/ROOT/lib/libThread.so
Load Error: Failed to load Dynamic link library /Users/John/ROOT/lib/libGpad.so

Has anyone else encountered this or know how to fix it? Would it just be easiest/best to update root to a newer version?

Thanks
John

I also have it using TFile in 5.34:

root [0]    TFile hsimple("hsimple.root");
dlopen error: dlopen(/Users/couet/git/root534-cocoa-bin/lib/libRIO.so, 9): can't resolve symbol __ZTVN10__cxxabiv117__class_type_infoE in /Users/couet/git/root534-cocoa-bin/lib/libThread.so because dependent dylib #3 could not be loaded in /Users/couet/git/root534-cocoa-bin/lib/libThread.so
Load Error: Failed to load Dynamic link library /Users/couet/git/root534-cocoa-bin/lib/libRIO.so
Error in <TCint::AutoLoadCallback>: failure loading library libRIO.so for class TFile
Error: Can't call TFile::TFile("hsimple.root") in current scope (tmpfile):1:
Possible candidates are...
(in TFile)
*** Interpreter error recovered ***
root [1] 

It looks like an IO problem . May be @pcanal have an idea.

I am guessing that due to change in the OS/Compiler the code needs to be recompile …

I did that indeed. But it did not help.

Hi all,

I didn’t find any solutions to my above issue with ROOT 5.34 so I tried to install the latest version of ROOT, 6.10.08, and I’m now having a new issue when trying to launch a TBrowser. This time it opens but I get the following error:

Error in TInterpreter::TCling::AutoLoad: failure loading library libGuiHtml.so for TGHtml
cling::DynamicLibraryManager::loadLibrary(): dlopen(/Users/John/ROOT/ROOT_6.10.08/lib/libGuiHtml.so, 9): Library not loaded: libssl.1.0.0.dylib
Referenced from: /Users/John/ROOT/ROOT_6.10.08/lib/libNet.so
Reason: image not found

And the error keeps looping in the terminal until I force quit (ctrl+z). I am confused though because I checked in /Users/John/ROOT/ROOT_6.10.08/lib/ and verified that libNet.so and libGuiHTML.so were both indeed there.

Any suggestions?

The missing library now is libssl which is likely on your system (assuming ROOT was compiled locally) and thus you might ‘just’ be missing its directory to be listed in the LD_LIBRARY_PATH.

Do you know where I might find it? I tried looking for this library to be sure but instead I only found the following:

libssl.0.9.7.dylib
libssl.0.9.8.dylib
libssl.35.dylib
libssl.43.dylib

searching in /usr/lib

Is it normally located elsewhere? Once I find it how do I add it to LD_LIBRARY_PATH

I tried to make sure I have the latest version of OpenSSL by doing “brew update” then “brew install openssl”. Then I did “openssl version” which returned “OpenSSL 1.0.02h 3 May 2016”

Sorry if any of these are dumb questions. Although fairly familiar with the basics of ROOT I haven’t run into many issues installing it before and I don’t have a good understanding of what many of the suggestions I read actually mean.

Thanks,
John

After some googling I also ran across this discussion:

Wherein the suggest there might be an issue using brew to install openssl. So I ran the command “brew info openssl” and got the following:


openssl: stable 1.0.2m (bottled) [keg-only]
SSL/TLS cryptography library
https://openssl.org/
/usr/local/Cellar/openssl/1.0.2m (1,792 files, 12.3MB)
  Poured from bottle on 2017-11-12 at 15:11:04
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/openssl.rb
==> Dependencies
Build: makedepend ✘
==> Options
--without-test
	Skip build-time tests (not recommended)
==> Caveats
A CA file has been bootstrapped using certificates from the SystemRoots
keychain. To add additional certificates (e.g. the certificates added in
the System keychain), place .pem files in
  /usr/local/etc/openssl/certs

and run
  /usr/local/opt/openssl/bin/c_rehash

This formula is keg-only, which means it was not symlinked into /usr/local,
because Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries.

If you need to have this software first in your PATH run:
  echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile

For compilers to find this software you may need to set:
    LDFLAGS:  -L/usr/local/opt/openssl/lib
    CPPFLAGS: -I/usr/local/opt/openssl/include

I put the ‘export PATH…’ line into my .bash-profile as it suggested but I dont understand what it means about the setting the LDFLAGS and CPPFLAGS. Is that something I need to pass to cmake when building root? How do I do that if so?

Thanks,
John

Hi, I think what you will need is to pass -DCMAKE_PREFIX_PATH=/usr/local to cmake when configuring ROOT, so that it can find the libraries that you installed with Homebrew into /usr/local, and also -Drpath=ON so that it doesn’t try to pick different versions of the libraries at runtime (i.e., try to pick libssl-1.0.0 if you linked against the system libssl-0.9.7). On doing that, please configure ROOT to be installed somewhere and install it before using it. Then, just add $ROOTSYS to your $PATH and you should be good to go. Let us know if this doesn’t work for you. With this setup, you should not need to set DYLD_LIBRARY_PATH to anything. Cheers,

Hi,

I tried your suggestion but I still have the same problem (ROOT starts up fine but when I try to open a TBrowser I get the error about libssl.1.0.0.dylib not being loaded). I did a make clean followed by cmake -DCMAKE_PREFIX_PATH=/usr/local -Drpath=ON ../path/to/root/source and then cmake --build . all in the build directory I created.

I noticed during the build that it also gave me a similar error when it was nearly finished and it was trying to process hsimple.C:

Processing hsimple.C... cling::DynamicLibraryManager::loadLibrary(): dlopen(/Users/John/ROOT/ROOT_6.10.08/lib/libTree.so, 9): Library not loaded: libssl.1.0.0.dylib Referenced from: /Users/John/ROOT/ROOT_6.10.08/lib/libNet.so Reason: image not found Error in <TInterpreter::TCling::AutoLoad>: failure loading library libTree.so for TNtuple.h

I don’t understand why it keeps failing to find this library. I verified that It’s located in /usr/local/ (specifically in /usr/local/opt/openssl/lib/) so I don’t see why it wasn’t found?

Thanks,
John

Ah, compilers don’t do recursive search to find libraries. You’d have to specify
-DCMAKE_PREFIX_PATH=/usr/local/opt/openssl in that case.

Although in your case, due to the limited amount of things in that directory, you could just
export LD_LIBRARY_PATH=/usr/local/opt/openssl, and see if the problem goes away.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.

I investigated a bit more the problem with 5.34. It it seems that if I rebuild root using root-config (from the directory where main.cxx is typically $ROOTSYS/main/src), then I get a working module:

$ g++ `root-config --cflags` -o rootnew rmain.cxx `root-config --glibs`
$ ./rootnew
  *******************************************
  *                                         *
  *        W E L C O M E  to  R O O T       *
  *                                         *
  *   Version   5.34/37      6 April 2016   *
  *                                         *
  *  You are welcome to visit our Web site  *
  *          http://root.cern.ch            *
  *                                         *
  *******************************************

ROOT 5.34/37 (heads/v5-34-00-patches@v5-34-36-1-g4008982, Jan 17 2018, 10:30:00 on macosx64)

CINT/ROOT C/C++ Interpreter version 5.18.00, July 2, 2010
Type ? for help. Commands must be C++ statements.
Enclose multiple statements between { }.
root [0] gSystem->Load("libRIO.so")
(int)1
root [1]