Code working on local PC, libGL / symbol not defined in current scope errors on another

Hello ROOT experts,

I’ve been working on a .C file for a while now, and it’s been running on my personal laptop for a few months, no errors.

However, I want to send it to my local batch farm to run it quicker. Whenever I run it on the PCs there, I get the following errors:

libGL error: dlopen /usr/lib64/dri/nouveau_dri.so failed (/usr/lib64/dri/nouveau_dri.so: cannot open shared object file: No such file or directory) libGL error: unable to load driver: nouveau_dri.so libGL error: driver pointer missing libGL error: failed to load driver: nouveau Error: Symbol n is not defined in current scope SinglePhiMaster.C:41: Error: Binary operator oprand missing SinglePhiMaster.C:41: *** Interpreter error recovered ***

I don’t really see the reason I’m getting the final errors on another PC, if the errors weren’t, and haven’t been, picked up on my local machine. Is there any way I can get it to run the same way as I do on my local machine?

Thanks,

Luke

Hi Luke,

apparently you are missing some libraries.
How do you run the code? What libraries do you load (you can invoke gSystem->ListLibraries()) in your local setup andare they present in the remote one?

Cheers,
Danilo

Why don’t you compile your .C file instead of interpreting it? It will run much quicker without the need of a farm.

You need a “plus” sign at the end: root -l SinglePhiMaster.C+

[quote=“dpiparo”]Hi Luke,

apparently you are missing some libraries.
How do you run the code? What libraries do you load (you can invoke gSystem->ListLibraries()) in your local setup andare they present in the remote one?

Cheers,
Danilo[/quote]

Hi Danilo,

Thanks for the response. I just run the code as: “.X SinglePhiMaster.C”

When I invoke gSystem->ListLibraries() on my local machine, I get:

Loaded shared libraries

/home/berg/Repositories/root-6.06.00/lib/libCore.so
/home/berg/Repositories/root-6.06.00/lib/libRint.so
/home/berg/Repositories/root-6.06.00/lib/libCling.so
/home/berg/Repositories/root-6.06.00/lib/libRIO.so
/home/berg/Repositories/root-6.06.00/lib/libThread.so
/home/berg/Repositories/root-6.06.00/lib/libMathCore.so

6 libraries loaded

When I do the same on the batch farm machine:

Loaded shared libraries

/usr/lib64/root/libCint.so
/usr/lib64/root/libCore.so
/usr/lib64/root/libRint.so
/usr/lib64/root/libMathCore.so

4 libraries loaded

So, I guess I am missing 3 libraries (libCling.so, libRIO.so and libThrread.so) on my batch farm machine, but the local machine also doesn’t have libCint.so. Is this to do with root versions perhaps?

Cheers,

Luke

[quote=“ferhue”]Why don’t you compile your .C file instead of interpreting it? It will run much quicker without the need of a farm.

You need a “plus” sign at the end: root -l SinglePhiMaster.C+[/quote]

It throws loads of errors if I do root SinglePhiMaster.C+. If I do the same without the +, if runs without error and working as intended.

Perhaps I should spend a while fixing these errors, so that it will work with .C+.

Hi,

I think you’re in a bit of a mess here :slight_smile: You have root-6 (cling) on your machine and root-5 (cint) on the batch nodes … this might or might not matter in your case but sure could lead to the program not doing what you expect it to do.

Then, I assume you are not really using OpenGL … so the question is why does it get loaded. Apparently the installation on the batch is not complete so libGL can’t be loaded due to missing dependencies.

Cheers,
\m

Hi,

just to add something to the absolutely correct comment of Matevz, these steps might be useful to achieve the distribution of your computation on the cluster:
o Install on your local machine the exact same version of root5, better if you can interactively login in one of the nodes and develop your code there
o Make it work with root5
o Compile an executable linked against the libraries of root for performance reasons
o Start submitting the jobs

Cheers,
Danilo

It all works fine now after I fix the errors associated with the messages from running myFile.C+.

Thanks, I’ll be doing this from now on.

1 Like