Hi,
I have loaded the following code in ROOT 5.18
#include "Riostream.h"
#include "TComplex.h"
#include "TMatrixT.h"
void foo() {
TMatrixT<TComplex> K1;
}
Running foo() gives
Error: Function BIT(14) is not defined in current scope TMatrixTBase.h:122:
*** Break *** segmentation violation
Using host libthread_db library “/lib/libthread_db.so.1”.
Attaching to program: /proc/5827/exe, process 5827
[Thread debugging using libthread_db enabled]
[New Thread -1223854416 (LWP 5827)]
0xffffe410 in __kernel_vsyscall ()
#1 0xb7196753 in __waitpid_nocancel () from /lib/libc.so.6
#2 0xb71413bb in do_system () from /lib/libc.so.6
#3 0xb72386bd in system () from /lib/libpthread.so.0
#4 0xb79aeccd in TUnixSystem::Exec () from /usr/local/root/lib/libCore.so
#5 0xb79b3997 in TUnixSystem::StackTrace ()
from /usr/local/root/lib/libCore.so
#6 0xb79b29ae in TUnixSystem::DispatchSignals ()
from /usr/local/root/lib/libCore.so
#7 0xb79b2a6d in SigHandler () from /usr/local/root/lib/libCore.so
#8 0xb79ac284 in sighandler () from /usr/local/root/lib/libCore.so
#9
#10 0xb7d81d4a in G__G__Math_80_0_70 () from /usr/local/root/lib/libCore.so
#11 0xb73e171a in Cint::G__ExceptionWrapper ()
from /usr/local/root/lib/libCint.so
#12 0xb74e1ff0 in G__call_cppfunc () from /usr/local/root/lib/libCint.so
#13 0xb74bb893 in G__interpret_func () from /usr/local/root/lib/libCint.so
#14 0xb74aa072 in G__getfunction () from /usr/local/root/lib/libCint.so
#15 0xb74c93ca in G__basedestructrc () from /usr/local/root/lib/libCint.so
#16 0xb74c91b7 in G__basedestructrc () from /usr/local/root/lib/libCint.so
#17 0xb74c91b7 in G__basedestructrc () from /usr/local/root/lib/libCint.so
#18 0xb74c91b7 in G__basedestructrc () from /usr/local/root/lib/libCint.so
#19 0xb74c91b7 in G__basedestructrc () from /usr/local/root/lib/libCint.so
#20 0xb74c91b7 in G__basedestructrc () from /usr/local/root/lib/libCint.so
#21 0xb74c91b7 in G__basedestructrc () from /usr/local/root/lib/libCint.so
#22 0xb74ca2c4 in G__basedestructor () from /usr/local/root/lib/libCint.so
#23 0xb74ab2bc in G__getfunction () from /usr/local/root/lib/libCint.so
#24 0xb74ca6ab in G__basedestructor () from /usr/local/root/lib/libCint.so
#25 0xb74ab2bc in G__getfunction () from /usr/local/root/lib/libCint.so
#26 0xb7544961 in G__destroy_upto () from /usr/local/root/lib/libCint.so
#27 0xb74bdc3e in G__interpret_func () from /usr/local/root/lib/libCint.so
#28 0xb74aa0d5 in G__getfunction () from /usr/local/root/lib/libCint.so
#29 0xb746e3de in G__getitem () from /usr/local/root/lib/libCint.so
#30 0xb7476945 in G__getexpr () from /usr/local/root/lib/libCint.so
#31 0xb751049b in G__exec_statement () from /usr/local/root/lib/libCint.so
#32 0xb7458a1a in G__exec_tempfile_core () from /usr/local/root/lib/libCint.so
#33 0xb7458d26 in G__exec_tempfile_fp () from /usr/local/root/lib/libCint.so
#34 0xb75171c8 in G__process_cmd () from /usr/local/root/lib/libCint.so
#35 0xb79868df in TCint::ProcessLine () from /usr/local/root/lib/libCore.so
#36 0xb78e5446 in TApplication::ProcessLine ()
from /usr/local/root/lib/libCore.so
#37 0xb7380259 in TRint::HandleTermInput () from /usr/local/root/lib/libRint.so
#38 0xb737e775 in TTermInputHandler::Notify ()
from /usr/local/root/lib/libRint.so
#39 0xb7380ca4 in TTermInputHandler::ReadNotify ()
from /usr/local/root/lib/libRint.so
#40 0xb79b259b in TUnixSystem::CheckDescriptors ()
from /usr/local/root/lib/libCore.so
#41 0xb79b310e in TUnixSystem::DispatchOneEvent ()
from /usr/local/root/lib/libCore.so
#42 0xb793d841 in TSystem::InnerLoop () from /usr/local/root/lib/libCore.so
#43 0xb79414eb in TSystem::Run () from /usr/local/root/lib/libCore.so
#44 0xb78e3c28 in TApplication::Run () from /usr/local/root/lib/libCore.so
#45 0xb73807bf in TRint::Run () from /usr/local/root/lib/libRint.so
#46 0x08048dd3 in main ()
I interpret/understand/think, that ROOT
creates an instance of TMatrixT,
checks, if the matrix object is valid,
which does not work, because BIT(14) is not defined,
additionally or therefore throws a seg violation
I don’t have any idea how to fix or circumvent 3. and 4.
Thanks.
Cheers.
Jan
pcanal
April 10, 2008, 8:56am
2
Hi,
You will need to load libMatrix explicitly so that you get the compiled version instead of the intertreted version (of TMatrixT). This is a current weakness of the autoloader.
Cheers,
Philippe