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

From: Rene Brun (Rene.Brun@cern.ch)
Date: Fri Sep 11 1998 - 15:30:44 MEST


Richard Dubois wrote:
> 
>  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!
> 

Richard,
My guess is that you have a memory leak somewhere. You must take care
of deleting all objects, etc created in the event cycle.
To monitor what is happening, I suggest you include the following
statement in your event loop
    gObjectTable->Print(); // requires #include<TObjectTable.h>
This will show you the number of objects for each active class
in memory.

Rene Brun



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:34:37 MET