Hello, I do not know if the following problem already appears in this mailing list but please, help me. I have a compiled ROOT program which run in background or in batch and which does not need to access the X serveur of my PC. But when it run on a remote host, I have a crash if the access to my display is denied?!?!? First let me introduce myself : I use - ROOT version 2.23 and - Linux 2.2.10/RedHat 5.0 - My c++ compilator is egcs-1.1.2 release. - libc.so.6 or - Linux 2.0.36/Slackware. - C++ compilator is gcc version 2.7.2.2 - libc.so.5 As we can imagine I have a very big and beautiful program but, try this simple example: //----------------------------- #include <iostream.h> #include "TROOT.h" #include "TFile.h" extern void InitGui(); VoidFuncPtr_t initfuncs[] = { InitGui, 0 }; int main (int argc, char **argv) { cout<<"Just do it!"<<endl; // init ROOT system TROOT root("Hello","hello", initfuncs); // Create output file TFile *file = new TFile("hello.txt","RECREATE","P'tit test entre amis",2); file->Close(); } // ---------------- That's all Then compile with g++ -O -Wall -fPIC -I/usr/local/root/include -c test.C for gcc or g++ -O -fno-rtti -fno-exceptions -Wall -fPIC -I/usr/local/root/include -c test.C for egcs and then link with : g++ test.o -L/usr/local/root/lib -lCore -lCint -lHist -lGX11 -lGraf -lGraf3d -lGpad -lTree -lProof -lRint -lPostscript -lMatrix -lPhysics -lNew -lGpad -lGX11 -lX3d -lXpm -L/usr/X11R6/lib -lXm -lXext -lXt -lX11 -lg++ -ldl -rdynamic -L/usr/lib -lm -o hello Run the program "hello" on remote host, accessed from your terminal by telnet. It Works! nice... Then remove the remote host name from X control list : xhost -<remote> Now run it again. It crash with the standard well known message : Xlib: connection to "<local>:0.0" refused by server Xlib: Client is not authorized to connect to Server Error in <TGClient::TGClient>: can't open display "<local>:0", bombing... Now, you can say : "Why do you deny the access to your remote machine?". Event if I allow all machine over the world to access my display with "xhost +" command (I don't do that), unfortunatly I lock the screen of my PC when I leave my office. So each night all batch job crash for the same reason (I refuse to work day and night...). And anyway my program don't need this authority. Ok there is something wrong in the compilation. If I keep only the minimal list of library needed for the load, for example : g++ test.o -L/usr/local/root/lib -lCore -lCint -L/usr/X11R6/lib -lXm -lXext -lXt -lX11 -lg++ -ldl -rdynamic -L/usr/lib -lm -o hello It works again ! I am the most happiest guy in the world! But I can not control all libraries for each new line added in my code. Could you say to me which library is responsible of this? It seems to me that the beavior of some functionnality of ROOT is handled by different libraries. If (as I think) the containt of the ROOT libraries is involved in this behavior, that could makes ROOT unreliable. What do you think about my probleme ? Maybe I am totally wrong. Thanks for your help, Pascal. for HESS Collaboration : http://www-hfm.mpi-hd.mpg.de/HESS/HESS.html ====================================================================== Pascal Vincent LPNHE IN2P3-CNRS-Universite Paris VI & VII 4, Place Jussieu - BP 200 - Tour 33 Rdc, 75252 PARIS cedex 05 - France Tel: 01 44 27 48 43 Fax: 01 44 27 46 38 e-mail: vincentp@in2p3.fr WWW: http://www-lpnhep.in2p3.fr/delphi/vincentp/ ................. ======================================================================
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:20 MET