ROOT 6.26/00 segmentation violation (directory name begins with a "dot")

I have found a strange bug in the newest ROOT 6.26/00 (which does not appear in previous versions, e.g., 6.24/06).
If the full path in which ROOT is installed contains a subdirectory whose name begins with a “dot,” then ROOT dies with a mysterious “segmentation violation”.
Please fix it ASAP.

[...]$ cd /tmp
[...]$ tar -zxf root_v6.26.00.Linux-ubuntu20-x86_64-gcc9.3.tar.gz
[...]$ mv root .MyRoot
[...]$ source /tmp/.MyRoot/bin/thisroot.sh
[...]$ root

 *** Break *** segmentation violation



===========================================================
There was a crash.
This is the entire stack trace of all threads:
===========================================================
#0  0x00007f1c5aa20c6a in __GI___wait4 (pid=9717, stat_loc=stat_loc
entry=0x7ffed4b564a8, options=options
entry=0, usage=usage
entry=0x0) at ../sysdeps/unix/sysv/linux/wait4.c:27
#1  0x00007f1c5aa20c2b in __GI___waitpid (pid=<optimized out>, stat_loc=stat_loc
entry=0x7ffed4b564a8, options=options
entry=0) at waitpid.c:38
#2  0x00007f1c5a98ff97 in do_system (line=<optimized out>) at ../sysdeps/posix/system.c:172
#3  0x00007f1c5b05633e in TUnixSystem::StackTrace() () from /tmp/.MyRoot/lib/libCore.so.6.26
#4  0x00007f1c5b0531c5 in TUnixSystem::DispatchSignals(ESignals) () from /tmp/.MyRoot/lib/libCore.so.6.26
#5  <signal handler called>
#6  0x00007f1c59ae9f4f in ?? () from /tmp/.MyRoot/lib/libCling.so
#7  0x00007f1c566a4a50 in cling::DynamicLibraryManager::initializeDyld(std::function<bool (llvm::StringRef)>) () from /tmp/.MyRoot/lib/libCling.so
#8  0x00007f1c567415c4 in cling::IncrementalExecutor::IncrementalExecutor(clang::DiagnosticsEngine&, clang::CompilerInstance const&) () from /tmp/.MyRoot/lib/libCling.so
#9  0x00007f1c566b9f1c in cling::Interpreter::Interpreter(int, char const* const*, char const*, std::vector<std::shared_ptr<clang::ModuleFileExtension>, std::allocator<std::shared_ptr<clang::ModuleFileExtension> > > const&, bool, cling::Interpreter const*) () from /tmp/.MyRoot/lib/libCling.so
#10 0x00007f1c565d54e4 in TCling::TCling(char const*, char const*, char const* const*) () from /tmp/.MyRoot/lib/libCling.so
#11 0x00007f1c565d7425 in CreateInterpreter () from /tmp/.MyRoot/lib/libCling.so
#12 0x00007f1c5aef2b03 in TROOT::InitInterpreter() () from /tmp/.MyRoot/lib/libCore.so.6.26
#13 0x00007f1c5aef2fff in ROOT::Internal::GetROOT2() () from /tmp/.MyRoot/lib/libCore.so.6.26
#14 0x00007f1c5af0003d in TApplication::TApplication(char const*, int*, char**, void*, int) () from /tmp/.MyRoot/lib/libCore.so.6.26
#15 0x00007f1c5b3223db in TRint::TRint(char const*, int*, char**, void*, int, bool) () from /tmp/.MyRoot/lib/libRint.so.6.26
#16 0x000055ac72cd32c9 in main ()
===========================================================


The lines below might hint at the cause of the crash.
You may get help by asking at the ROOT forum https://root.cern/forum
Only if you are really convinced it is a bug in ROOT then please submit a
report at https://root.cern/bugs Please post the ENTIRE stack trace
from above as an attachment in addition to anything else
that might help us fixing this issue.
===========================================================
#6  0x00007f1c59ae9f4f in ?? () from /tmp/.MyRoot/lib/libCling.so
#7  0x00007f1c566a4a50 in cling::DynamicLibraryManager::initializeDyld(std::function<bool (llvm::StringRef)>) () from /tmp/.MyRoot/lib/libCling.so
#8  0x00007f1c567415c4 in cling::IncrementalExecutor::IncrementalExecutor(clang::DiagnosticsEngine&, clang::CompilerInstance const&) () from /tmp/.MyRoot/lib/libCling.so
#9  0x00007f1c566b9f1c in cling::Interpreter::Interpreter(int, char const* const*, char const*, std::vector<std::shared_ptr<clang::ModuleFileExtension>, std::allocator<std::shared_ptr<clang::ModuleFileExtension> > > const&, bool, cling::Interpreter const*) () from /tmp/.MyRoot/lib/libCling.so
#10 0x00007f1c565d54e4 in TCling::TCling(char const*, char const*, char const* const*) () from /tmp/.MyRoot/lib/libCling.so
#11 0x00007f1c565d7425 in CreateInterpreter () from /tmp/.MyRoot/lib/libCling.so
#12 0x00007f1c5aef2b03 in TROOT::InitInterpreter() () from /tmp/.MyRoot/lib/libCore.so.6.26
#13 0x00007f1c5aef2fff in ROOT::Internal::GetROOT2() () from /tmp/.MyRoot/lib/libCore.so.6.26
#14 0x00007f1c5af0003d in TApplication::TApplication(char const*, int*, char**, void*, int) () from /tmp/.MyRoot/lib/libCore.so.6.26
#15 0x00007f1c5b3223db in TRint::TRint(char const*, int*, char**, void*, int, bool) () from /tmp/.MyRoot/lib/libRint.so.6.26
#16 0x000055ac72cd32c9 in main ()
===========================================================


[...]$

Hi @Wile_E_Coyote ,
if I am not mistaken that is fixed by [cling] Do not skip hidden directories: by Axel-Naumann · Pull Request #10073 · root-project/root · GitHub (currently in master and soon available in v6.26.02). @Axel might be able to comment with more authority.

Cheers,
Enrico

I built the newest “v6-26-00-patches” branch as of 2022.03.10 (includes the “[cling] Do not skip hidden directories:” fix) and it seems to work fine.

BTW. @Axel Note that the compiler version on Ubuntu 20.04 has changed from “gcc 9.3.0” to “gcc 9.4.0” (so your next binary distribution should also change the name accordingly).

Thanks for the confirmation!

Indeed I can see GCC 9.4 on our Ubuntu builder nodes. The name is generated automatically; the next patch release should have it.

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