Problem of running remoll on ifarm
chandabindu opened this issue · 10 comments
Machine: ifarm
Geant4 version: 4.10.06.p02MT
CLHEP 2.4.1.3
ROOT 6.20.04
Branch: develop (fresh copy).
The program complied ( with warning like "make[2]: Warning: File `CMakeFiles/reroot.dir/depend.make' has modification time 0.82 s in the future" and "make[2]: warning: Clock skew detected. Your build may be incomplete.")
When I tried to execute the following command "./remoll", the program returned following:
terminate called after throwing an instance of 'std::length_error'
what(): basic_string::_S_create
Abort
ifarm1801.jlab.org>
I tried a fresh copy on desktop (without multi-threading) and that worked.
Which geant4 installation are you using on the farm? There is no 4.10.06.p02MT in any centrally supported location.
Please see email from Maurizio Ungaro ungaro@jlab.org
He has suggested me to use that version:
Hello Chandan,
You can use this environment:
to load geant4 10.6 on ifarm1801 or newer.
In particular if you need the multithreaded compiled version of geant4:
setenv GEANT4_VERSION 4.10.06.p02MT
source /site/12gev_phys/softenv.csh 2.4
I’m cc-ing David Lawrence and Thomas Britton as the computer center is taking over the geant4 installation.
Regards,
Mauri
This appears to be caused by using a version of boost compiled against a different version of libstdc++ than the one provided by the compiler. There's not really a solution to this since the problem is with the way softenv.sh sets up its environment, other than the workaround avoiding the offending function (operator/=).
I can compile and run remoll now on ifarm.
I still seem to get this error on ifarm when building.
[ 96%] Building CXX object CMakeFiles/remoll.dir/remoll.cc.o [ 98%] Linking CXX executable reroot libremoll.so: undefined reference to
TString::TString(std::__cxx11::basic_strin g<char, std::char_traits, std::allocator > const&)'
libremoll.so: undefined reference to TROOT::RegisterModule(char const*, char co nst**, char const**, char const*, char const*, void (*)(), std::vector<std::pair <std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > , int>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_trai ts<char>, std::allocator<char> >, int> > > const&, char const**, bool)' collect2: error: ld returned 1 exit status make[2]: *** [reroot] Error 1 make[1]: *** [CMakeFiles/reroot.dir/all] Error 2 make[1]: *** Waiting for unfinished jobs.... [100%] Linking CXX executable remoll libremoll.so: undefined reference to
TString::TString(std::__cxx11::basic_strin g<char, std::char_traits, std::allocator > const&)'
libremoll.so: undefined reference to TROOT::RegisterModule(char const*, char co nst**, char const**, char const*, char const*, void (*)(), std::vector<std::pair <std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > , int>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_trai ts<char>, std::allocator<char> >, int> > > const&, char const**, bool)' collect2: error: ld returned 1 exit status make[2]: *** [remoll] Error 1 make[1]: *** [CMakeFiles/remoll.dir/all] Error 2 make: *** [all] Error 2
@rahmans1 That's a different error than this bug report. Please file a new report so I can get info on what geant4 you are using. The error you show is (typically) due to mixing c++11 and c++17 libraries.
I'll close this bug report since @chandabindu has confirmed that is resolved.
Anyways just wanted to confirm that it's resolved. I had to set this environment.
- module load gcc/9.2.0
- source /site/12gev_phys/softenv.csh 2.4
- source /site/12gev_phys/2.4/Linux_CentOS7.7.1908-gcc9.2.0/root/6.20.04/bin/thisroot.csh
Now it compiles as expected.
I think sourcing thisroot.csh should not be needed as it should be done by softenc.csh. In fact, even module load gcc shouldn't be needed. The only line is the softenv.csh (assuming you start from a relatively clean environment).