We are working on an implementation of a software to produce the output of experiment in a ROOT Tree. To this aim, we mixed FORTRAN and C++ programming to connect the current software to the new version. The software loops over all the events and for each one, takes data and writes them in a TTree contained in an output file. Then, at the end of processing on every event, it calls the Tree->Fill() method.
The problem occurred in a specific event and seems that the program crashed during the writing phase. The size of the output file is small (about 150MB), then we think that the problem is in the data. The traceback by the debugger is the following:
Offset 0x00000068 in procedure fillTTree__10TreeWriterFv, near line 1323 in file ../ref/TreeWriter.cpp
Offset 0x00000014 in procedure fillntu_, near line 24 in file ../ref/Fort2C.cpp
Offset 0x0002257c in procedure samev_, near line 6697 in file sample.f
Offset 0x00000018 in procedure sigtad_
Offset 0x0000001c in procedure uicadr_
Offset 0x000004f0 in procedure ancevt_
Offset 0x00000fdc in procedure anproc_
Offset 0x000008c8 in procedure anbgan_
Offset 0x00000544 in procedure anpars_
Offset 0x0000000c in procedure angen_pars_, near line 700 in file sample_bj.f
Offset 0x000000a4 in procedure anmain
--- End of call chain ---
I cannot figure out how find the problem, every suggestion is more than welcome.
Could you run this under valgrind? It seems to support AIX 5.3!
build a debug build of your software and ROOT,
prepend valgrind --num-callers=50 --track-origins=yes --suppressions=$ROOTSYS/etc/valgrind-root.supp to whatever you run, e.g. valgrind --num-callers=50 --track-origins=yes --suppressions=$ROOTSYS/etc/valgrind-root.supp ./myProgram
It doesn’t seems that ROOT structure grow too much… and also the process memory (vsz) reach a peak of 70.74 MB. I don’t know if this information could help to understand the problem… I’ll try to convince to install valgrind!