[ROOT] Strange behaviour of a stand-alone Root-based application

From: Volker Hejny (V.Hejny@fz-juelich.de)
Date: Thu Nov 22 2001 - 10:32:11 MET


Hi all,

I have a ugly problem here and since there are some really experienced
users on this list, I hope someone can give me some advice how to proceed.

I'm using root 3.02.03 and a Debian 'woody' Linux with kernel 2.4.12.

We are building some classes to manage reading from a local DAQ format 
into TObject based data classes together with a few classes doing the
administration. To test these classes, I have a macro and some
main function containing essentially the same code: opening the
file and do an event loop. I don't want to go into detail, because
I think my problem is a more basic one. I would really be happy to
get some hint where to start debugging.

What happens? The macro runs fine in an interactive root session loading
the shared library containing our classes before. Linking a stand-alone
program with the same library and all Root libraries given by
'root-config --libs', the program does ... nothing but using 100%
CPU time. Even the first line in the main function is not executed!!!
I never saw this problem with any other program before (Root-based or 
not). In the beginning, when my own classes where nearly empty, 
the program runs. I'm not aware of any non-trivial change in the code.

Running debugger, doing a CTRL-C and a backtrace gives (what does this
error means?):
(gdb) run
Starting program: /home/hejny/S/RootSorter/bin/test_revent
Error while mapping shared library sections:
libGlobal.so: Success. 

Program received signal SIGINT, Interrupt.
0x40551d95 in G__isenclosingclass ()
   from /usr/local/packages/root/root_cvs/lib/libCint.so
[This position is always the same on CTRL-C.]
(gdb) backtrace
#0  0x40551d95 in G__isenclosingclass ()
    from /usr/local/packages/root/root_cvs/lib/libCint.so
#1  0x405522a0 in G__defined_tagname ()
    from /usr/local/packages/root/root_cvs/lib/libCint.so
#2  0x40552683 in G__search_tagname ()
    from /usr/local/packages/root/root_cvs/lib/libCint.so
#3  0x40515e0e in G__get_linked_tagnum ()
    from /usr/local/packages/root/root_cvs/lib/libCint.so
#4  0x40cf5a20 in ?? ()
#5  0x40cf80a4 in ?? ()
#6  0x40506d48 in G__call_setup_funcs ()
    from /usr/local/packages/root/root_cvs/lib/libCint.so
#7  0x40d04b29 in ?? ()
#8  0x40cf8167 in ?? ()
#9  0x40cf8206 in ?? ()
#10 0x40d029c7 in ?? ()
#11 0x40ceb2ca in ?? ()
#12 0x4000b057 in call_init () from /lib/ld-linux.so.2
#13 0x4000b1ad in _dl_init () from /lib/ld-linux.so.2
	       

A strace gives the following output:

execve("/home/hejny/S/RootSorter/bin/test_revent", ...
[...]
brk(0)                                  = 0x804d564
open("/usr/local/packages/root/root_cvs/lib/libCore.so", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\220\306"..., 1024) = 1024
fstat64(0x3, 0xbfffe6bc)                = 0
old_mmap(NULL, 4794164, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40016000
mprotect(0x40358000, 1378100, PROT_NONE) = 0
old_mmap(0x40358000, 933888, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x341000) = 0x40358000
old_mmap(0x4043c000, 444212, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x4043c000
close(3)                                = 0
[... same for Cint, Hist, Graf, Graf3d, GPad, Tree, Rint, Postscript 
     Matrix, Physics for Root ...]
[... loading nsl, dl ...]
[... next my library ...]
open("libGlobal.so", O_RDONLY)          = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\340\246"..., 1024) = 1024
fstat64(0x3, 0xbfffe5ec)                = 0
getcwd("/home/hejny/S/RootSorter", 128) = 25
old_mmap(NULL, 327940, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40cd3000
mprotect(0x40d10000, 78084, PROT_NONE)  = 0
old_mmap(0x40d10000, 81920, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x3c000) = 0x40d10000
close(3)                                = 0
[... loading libstdc++, libm, libc ...]
[... and then ...
brk(0)                                  = 0x804d564
brk(0x804d584)                          = 0x804d584
brk(0x804e000)                          = 0x804e000
brk(0x8058000)                          = 0x8058000
brk(0x8059000)                          = 0x8059000
brk(0x805c000)                          = 0x805c000
brk(0x805f000)                          = 0x805f000
brk(0x8062000)                          = 0x8062000
brk(0x8063000)                          = 0x8063000
brk(0x8066000)                          = 0x8066000
brk(0x8069000)                          = 0x8069000
brk(0x806a000)                          = 0x806a000
brk(0x806d000)                          = 0x806d000
brk(0x8070000)                          = 0x8070000
brk(0x8073000)                          = 0x8073000
brk(0x8076000)                          = 0x8076000
brk(0x8079000)                          = 0x8079000
brk(0x807c000)                          = 0x807c000
brk(0x807f000)                          = 0x807f000
brk(0x8080000)                          = 0x8080000
brk(0x8083000)                          = 0x8083000
brk(0x8086000)                          = 0x8086000
brk(0x8087000)                          = 0x8087000
brk(0x808a000)                          = 0x808a000
brk(0x808d000)                          = 0x808d000
[... here it stops, CPU = 100% from that point on, memory = constant ...]

Best regards,
Volker
 
-- 
Dr. Volker Hejny                Tel: 02461/616853                      ** 
Institut f. Kernphysik          Fax: 02461/613930                     **
---------------------------------------------------------------- **  ** ---  
Forschungszentrum Juelich GmbH, D-52425 Juelich                    **



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:51:09 MET