[ROOT] ShowStreamerInfo on Win32

From: Dave Casper (dcasper@uci.edu)
Date: Tue Dec 26 2000 - 05:58:44 MET


	Hi,

I have generated a root file using Root3.0, including the "+" after each of
my classes in the LinkDef.h files.

I try to open the file in interactive root and use the ShowStreamerInfo()
method (as explained in the documentation for the new i/o features); I get
an access violation trying to read from address 0x00000000.
ShowStreamerInfo prints information for a couple classes before it crashes.
Without making a debug version of the root libraries (which I guess I could
do if I had to), it's not easy to tell exactly what the problem is.  I have
tried it with and without loading the dll which is built for my custom
classes before calling ShowStreamerInfo, and it doesn't make any difference.

I have tried using the other example in the documentation:

gROOT->GetClass(...)->GetStreamerInfo(1)->ls()

This appears to give a reasonable result for all my classes.

A simplified view of what is written in the file is:

TEvent (a tree with a single branch, which contains:)
   Int_t runNumber
   Int_t eventNumber
   Double_t time
   TEventData eventData

TEventData is derived from TFolder and has no data members of its own, per
se. However the TList* data member it inherits from TFolder can contain a
number of other object types.  ShowStreamerInfo prints a line for all of the
above, through TEventData and then crashes.  GetStreamerInfo()->ls() for
TEvent and TEventData seem to be reasonable.

As an unrelated aside, I also get a warning message:

Warning in <TWinNTSystem::SetProgname>: Wrong Program path

when I run root 3.0, unless I launch the program giving the full path name
and .exe extension on the command line.  Normally, I set my PATH to point to
the directory (%ROOTSYS%\bin) where the root executable is.  If I run the
program by typing the command "root", I get the above warning.  If and only
if I run the program with the command:

"c:\cern\myroot\Root3.0\root\bin\root.exe"

(which is the full path), I do not get the above warning.  It looks like
TWinNTSystem::SetProgname is supposed to handle the first case (implicit
path), but apparently something in the logic isn't working.  I'm not sure
what difference, if any, having the wrong program path would have (i.e. if
the warning can be ignored).

Thanks for any help,

Dave
dcasper@uci.edu



This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:40 MET