[ROOT] Latest problem on windows explained! (Really!)

From: Philippe Canal (pcanal@fnal.gov)
Date: Tue Oct 29 2002 - 14:17:57 MET


Hi,

I understood (and fixed) the problems on Window 98, XP, 2000 where ROOT
was mysteriously, randomly crashing or giving error messages like 'this
"text file name" is a binary file' or other weird behaviors.

This problem was only appearing at startup time and only on Windows.

The code will be fixed shortly in the CVS repository.

Cheers,
Philippe

And now for the gory details

In the constructor of TRint::TRint we had:

   ProcessLine("#include <RtypesCint.h>");

   gROOT->LoadClass("TGeometry",   "Graf3d"); 
   gROOT->LoadClass("TTree",       "Tree");
   ....
   ProcessLine(Form(".L %s",logon),kTRUE);

The problem comes from the fact that on Windows ProcessLine has the
execution of its CINT part delayed (1st problem) while gROOT->LoadClass
has the execution of its CINT part done immediately (and not protected
for multi-thread).

Both the calls are asking CINT to load a file and in this case,
__sometimes__ the loading of RtypesCint.h is happening __while__ loading
the libraries thus over-writing (randomly) part of one of the loading.  

The problem did indeed worsen since ROOT 3.03/07 with the introduction
of the first ProcessLine.



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