RE: [ROOT] non ROOT file an IsZombie problem

From: Axel Naumann (a.naumann@worldnet.att.net)
Date: Fri Jan 18 2002 - 20:03:10 MET


Hi,

there can but two reasons for this behavior I can think of.
* try building & running it in release mode. Root is linked with the release
new/delete versions, sometimes this interferes with the program's debug new
/ delete.
* make sure your root libs and headers version corresponds to your root dll
version.

I'd bet a piece of a deep dish pizza on the first option causing the
trouble. Workaround? _Always_ use the release libs, even in debug mode -
this means you lose the ability to debug mem problems, but therefor it
doesn't crash anymore. Or just ignore it. Or build your own root debug
version.

Cheers, Axel.

> -----Original Message-----
> From: owner-roottalk@pcroot.cern.ch
> [mailto:owner-roottalk@pcroot.cern.ch]On Behalf Of Valeri Fine
> Sent: Friday, January 18, 2002 11:05 AM
> To: joe robe; roottalk@pcroot.cern.ch
> Subject: Re: [ROOT] non ROOT file an IsZombie problem
>
>
> I have built your example (with no TROOT. ROOT version 3 doesn't
> require this)
> and it works with no problem.
>
>    Cheers, Valeri
> -----
> Dr.Valeri Fine
> STAR/US Atlas                                    E-mail: fine@bnl.gov
> Brookhaven National Lab                Phone: +1 631 344 7806
> Upton, NY 11973-5000                       FAX:     +1 631 344 4206
> USA
>
>
>
> ----- Original Message -----
> From: "joe robe" <joer00@yahoo.com>
> To: "Valeri Fine" <fine@bnl.gov>
> Cc: <roottalk@pcroot.cern.ch>
> Sent: Friday, January 18, 2002 11:31 AM
> Subject: Re: [ROOT] non ROOT file an IsZombie problem
>
>
> > Hello Valery,
> >
> > > The problem with your example is a simple one.
> > > We can not reproduce it to investigate.
> > >
> > > The code you attached has no TIter and TFile dtor
> > > has no TIter
> > > either.
> >
> > Thats the strange think, so to simplify it I made a
> > new (MSVC++) project with just 4 lines and the same
> > CRASH !!
> >
> > The code is
> >
> > int main( int argc, char ** argv )
> > {
> > TROOT ROOT("ROOT", "ROOT Test");
> > TFile File3("f:\\shittemp\\vokabeln.txt");
> > if(File3.IsZombie())
> > {
> > printf("This file is not a valid ROOT file !");
> > return 0; --> CRASH HERE !!
> > }
> > }
> >
> > The debugger than stops at the FIRST PUBLIC TIter
> > constructor with *col beeing not an object
> > (0xccccccccc). See below
> >
> >
> >
> > class TIter {
> >
> > private:
> >    TIterator    *fIterator;         //collection
> > iterator
> >
> > protected:
> >    TIter() : fIterator(0) { }
> >
> > public:
> > -->> Debugger points here   TIter(const TCollection
> > *col, Bool_t dir = kIterForward)
> >         : fIterator(col ? col->MakeIterator(dir) : 0)
> > { }
> >    TIter(TIterator *it) : fIterator(it) { }
> >    TIter(const TIter &iter);
> >    TIter &operator=(const TIter &rhs);
> >    virtual            ~TIter() { SafeDelete(fIterator)
> > }
> >    TObject           *operator()() { return fIterator
> > ? fIterator->Next() : 0; }
> >    TObject           *Next() { return fIterator ?
> > fIterator->Next() : 0; }
> >    const TCollection *GetCollection() const { return
> > fIterator ? fIterator->GetCollection() : 0; }
> >    Option_t          *GetOption() const { return
> > fIterator ? fIterator->GetOption() : ""; }
> >    void               Reset() { if (fIterator)
> > fIterator->Reset(); }
> >
> >    ClassDef(TIter,0)  //Iterator wrapper
> > };
> >
> >
> >
> > __________________________________________________
> > Do You Yahoo!?
> > Send FREE video emails in Yahoo! Mail!
> > http://promo.yahoo.com/videomail/
> >
>
>



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:38 MET