root crashes, cint works?

From: stefan kluth (skluth@mh1.lbl.gov)
Date: Fri May 29 1998 - 21:22:53 MEST


Hi,

I have an application consisting of the CLHEP 3- and 4-vectors, the CLHEP
lists and iterators and my own class which is based on these. I can
produce a custom application with cint (via makecint) which works ok. When
I create a custom application with root (via rootcint) I get root crashing
in "operator delete. Here are two (edited) example sessions, where I have
narrowed down the problem to creating and deleting a Hep3Vector object:

custom cint:

[online04] ~/scratch > alljetscint

cint : C/C++ interpreter
   Copyright(c) : 1991~1996 [hp] Hewlett-Packard-Japan
   Author       : Masaharu Goto (gotom@jpn.hp.com)
   Copyright(c) : 1995~1998 Masaharu Goto (MXJ02154@niftyserve.or.jp)
   revision     : 5.13.51, May 1 1998 by M.Goto

alljetscint> .class
List of all classes
file            line
(C++ compiled)          Hep3Vector 
(C++ compiled)          HepLorentzVector public:Hep3Vector 
(C++ compiled)          HepAListBase 
(C++ compiled)          Jet 
(C++ compiled)          HepConstAList<HepLorentzVector> public:HepAListBase 
(C++ compiled)          AllJets 
(C++ compiled)          HepConstAList<Jet> public:HepAListBase 

alljetscint> .T
Trace mode on 1
alljetscint> Hep3Vector* v1= new Hep3Vector(1,1,1);
{Hep3Vector* v v1= new Hep3Vector(1,1,1);
!!!Calling constructor 0x0.Hep3Vector for new Hep3Vector;
2    }
alljetscint> delete v1;
{delete v1;
!!!Calling destructor 0x1400b5220.~Hep3Vector() for v1;
2    }
alljetscint> 


Everything works fine. 

And here is the same with a custom root:

[online04] ~/scratch > alljetsroot
  *******************************************
  *                                         *
  *        W E L C O M E  to  R O O T       *
  *                                         *
  *   Version   2.00/07       19 May 1998   *
  *                                         *
  *  You are welcome to visit our Web site  *
  *          http://root.cern.ch            *
  *                                         *
  *******************************************

CINT/ROOT C/C++ Interpreter version 5.13.55, May 16 1998
Type ? for help. Commands must be C++ statements.
Enclose multiple statements between { }.
root [0] .class
List of all classes
file            line
------ tons os root classes -----------
(C++ compiled)          HepAListBase 
(C++ compiled)          Hep3Vector 
(C++ compiled)          HepLorentzVector public:Hep3Vector 
(C++ compiled)          Jet 
(C++ compiled)          HepConstAList<HepLorentzVector> public:HepAListBase 
(C++ compiled)          AllJets 
(C++ compiled)          HepConstAList<Jet> public:HepAListBase 
root [1] .T                                
Trace mode on 1
root [2] Hep3Vector* v1= new Hep3Vector(1,1,1);
{Hep3Vector* v v1= new Hep3Vector(1,1,1);
!!!Calling constructor 0x0.Hep3Vector for new Hep3Vector;
2    }
root [3] .g
----- lots of root stuff -------
0x140795c60 Hep3Vector* v1=0x140795c40
root [4] delete v1;
{delete v1;
!!!Calling destructor 0x140795c40.~Hep3Vector() for v1Fatal in <operator
delete>: storage area overwritten
aborting
IOT trap (core dumped)


I work on OSF1 online04.lbl.gov V4.0 386 alpha, a DEC unix 4 system with
the DEC cxx 6 compiler. 

Any ideas? cheers, Stefan

---Stefan Kluth---------------Lynen Fellow----------------|\--|\-------
-  LBNL, MS 50A 2160       -  phone:  +1 510 495 2376  -  |/  |/      -
-  1 Cyclotron Rd.         -  fax:    +1 510 495 2957  -  |\/\|\/\|'  -
---Berkeley, CA94720, USA-----e-mail: SKluth@lbl.gov------|/\/|/\/|----



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