Re: [ROOT] TObjectTable::Add

From: Victor Perevoztchikov (perev@bnl.gov)
Date: Tue Nov 13 2001 - 22:13:56 MET


Hi Jens Ivar,

> started wondering if there is some upper limit for the number of objects that
>  TObjectTable can handle.
There is no such limit.

> ....."random" numbers made as R = Hash(1), Hash(2), ...Hash(N) tested by <R>, <R*R>, <Ri*Ri+1>
> gives the same result as for libc rand().

This means only that:

   Hash(i++) gives as random result as libc rand(). Just Hash is good.

> fault. :) On my system RAND_MAX is defined as 2147483647.

No relation to your case. I think you delete the object twice.

Victor


Jens Ivar Jordre wrote:
> 
> Hello rooters.
> 
> (First the most important)
> I'm running ROOT 3.02/03 (configured with a.o. option --build=debug and compiled locally) on an
> x86 with RH 6.1 and gcc version egcs-2.91.66.
> 
> (Then the actual problem)
> I recently encountered a problem where when deleting an object, there is no reference to it in
> gObjectTable. This occurs after running through a number of events, thus after a lot of objects
> created on and deleted from the stack and the heap. The warning message is along the lines of
> 
>         Warning in <TObjectTable:: Remove>: <object address> not found at <index>
> 
> I introduced some more debug statements into my TObjectTable, e.g. in TObjectTable::Add(TObject
> *op) in the case that fTable[slot] != 0. I then found that several times before I got the first
> Remove warning (the one above) FindElement returned a non empty slot in Add. I therefore
> started wondering if there is some upper limit for the number of objects that TObjectTable can
> handle.
> 
> Looking at the documentation for TMath::Hash(const void *txt, Int_t ntxt), i.e. the one used if
> no OLD_HASH is defined, it says that
> ....."random" numbers made as R = Hash(1), Hash(2), ...Hash(N) tested by <R>, <R*R>, <Ri*Ri+1>
> gives the same result as for libc rand().
> 
> I wonder does this statement mean that for N < RAND_MAX, TMath::Hash(const void *txt, Int_t
> ntxt) will return a unique index? Or in other words is the fact that FindElement in
> TObjectTable::Add(TObject *op) returns a non-empty slot most probably my fault or TMath::Hash's
> fault. :) On my system RAND_MAX is defined as 2147483647.
> 
> Hoping for some enlightening answers.
> 
> Best wishes from
> Jens Ivar Jordre
> 
> --
> Jens Ivar Jřrdre
> e-mail:    JensIvar.Jordre@fi.uib.no
> usually:   Dep. of Phys., Allégt. 55, N-5007 BERGEN, NORWAY
> currently: Bldg 510D, P.O.Box 5000, Upton, NY 11973-5000, USA
> phone:     +1-631-344-4223

-- 
Victor M. Perevoztchikov   perev@bnl.gov  perev@vxcern.cern.ch       
Brookhaven National Laboratory MS 510A PO Box 5000 Upton NY 11973-5000
tel office : 631-344-7894; fax 631-344-4206; home 631-345-2690



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