Re: [ROOT] Different behaviour (i.e. Crash) of TString on Linux andWindows

From: Andreas Zoglauer (
Date: Sat Mar 06 2004 - 12:45:38 MET


I got a lot of a replys - but th eproblem is still there.

Since several persons have proposed to switch to the newest version in 
cvs, but at the moment on windows I do not have the posiblity to 
recompile ROOT, it is probably the best solution to wait for the new 
binaries of ROOT 4.00/03 win32gdk.

So here I give a summary of the problem:

The idea was to try to run our ROOT based Linux software also on Windows
XP SP1 with Visual C++ 6.0 SP5 without using the cygwin environment.
I started with the binaries of ROOT v3.10/02 win32gdk (the recommended
version) and got everything to compile and link.
The one and only problem was that each call like
cout<<TString("A TString")<<endl; crashes the program.
Commenting out all those appearances, the program (consisting out of ~50
classes) runs flawlessly and reproduces the results gained on Linux.

I encapsulated the problem into the small program:

#include <Riostream.h>
#include "TString.h"
int Macro()
	cout<<"Let's crash:"<<endl;
	return 0;

Compiling this in CINT with .x Macro.C+ the program crashes in the
marked line, as it does when I compile it in Visual C++

Switching to the binaries of ROOT v4.00/02 win32gdk resulted in the same
behaviour. In detail, I use: "win32gdk, 4.0.2 from
WindowsXP/NT/w2000 with VC++ 7.0 (runs with VC++6), version 4.00/02 
(good old tar file) **WIN32GDK**"

Compiling the programs in $ROOTSYS/test leaded to a crash during the
execution of the program tstring (no output was generated), but others
like event.exe run flawlessly. Here is the requested output of nmake:

C:\Daten\Root\r040002\test>nmake -f Makefile.win32

Microsoft (R) Program Maintenance Utility   Version 6.00.8168.0
Copyright (C) Microsoft Corp 1988-1998. All rights reserved.

         cl -DWIN32  -D_WIN32 -D_MT -D_DLL -MD -EHsc  -nologo -G5 -GR
   -DVISUAL_CPLUSPLUS -D_WINDOWS -IC:\Daten\Root\R040002/include -O2 -c
subsystem:console,4.0 -nologo tstring.obj
C:\Daten\Root\R040002/lib/libHist.lib  C:
C:\Daten\Root\R040002/lib/libGraf3d.lib  C:\
Daten\Root\R040002/lib/libGpad.lib C:\Daten\Root\R040002/lib/libTree.lib
C:\Daten\Root\R040002/lib/libPostscript.lib  C:\
C:\Daten\Root\R040002/lib/libPhysics.lib ms
vcrt.lib oldnames.lib kernel32.lib  ws2_32.lib mswsock.lib advapi32.lib
ib gdi32.lib comdlg32.lib winspool.lib MSVCPRT.LIB -out:tstring.exe
"tstring.exe done"

Unfortunately up to now, nobody seems to be able to reproduce the
problem. ;-((

But there are rumours that a fix is already in cvs. So it is probably
the best idea to wait until somebody compiles a new version of win32gdk.

Thanks and Ciao,

This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:06 MET