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