I/O on 'large' events: 'illegal instruction'

Richard Dubois (richard@SLAC.stanford.edu)
Thu, 10 Sep 1998 21:23:14 -0700


I am attempting to produce files of 100 events of approximately 250kB
per event. When I test it on small events (a couple of particles per
event for a handful of events), all is well and the read-back structures
appear perfect. When I run on the bigger events on AIX, I get an
'illegal instruction' abort, apparently in tree->fill().

My tree consists of 5 branches: 4 TClonesArrays and 1 TMap. The TMap
'value' objects themselves contain a TMap*. One of the TClonesArrays is
of MC particles. The other TClonesArrays objects contain pointers to
those MC particles. The TMaps contained in the top TMap also contain
pointers to the MC particles. split=0; bufsize=512000.

The crashes appear to be history-dependent: if I excise a failing event
and run it by itself, all is well. I am wondering about event cleanup. I
do ->Delete's on all the TClonesArrays and the top TMap (not DeleteAll
on the TMap - there are many complaints about already removed objects if
I do(?)) after each tree->Fill(). All of the objects contained are
created on the heap. I don't do any other cleanup nor have I done
anything special for destructors for the contained objects.

Should I be doing anything differently for cleanup or in setup of the
root file? Of course, I could simply have a bug in the code!

Thanks,

Richard

--
Richard Dubois
SLD, Stanford Linear Accelerator Center
Richard@slac.stanford.edu
http://www.slac.stanford.edu/~richard/
650-926-3824
650-926-2923 (FAX)