I frequently link ROOT libraries into applications, in Win 2000 or Win XP. I run ZoneAlarm to monitor connections to the internet. Each time I start such a newly-built executable, ZoneAlarm traps it as it tries to contact someone on the internet. I suspect this is for the ROOT developers to monitor useage. I usually refuse, which does not seem to hurt anything. My question/plea is:
HOW TO I STOP ROOT FROM CALLING HOME???
We do not have a spy in the Root code :
Are you getting this problem with the standard Root executable module?
win32, win32gdk, win32gcc?
Please post more info about this problem.
What I know about this is that it is very consistent: every time I link an application that needs ROOT, the app attempts to access the internet. Since it is new, ZoneAlarm properly alerts me. It started with v3.04.02, I think, at least it has been a feature for months. It continues to annoy me in v3.10.02. This is in initialization code, before main() is invoked, and I don’t know how to set a breakpoint. The IP address that ZoneAlarm reports is actually the DNS server, on port 53.
You did not answer my questions.
-Do you see the problem also with the standard ROOT executable module?
-which version are you using? win32, win32gdk, win32gcc?
Sorry, the standard ROOT executable has the same feature, which is not annoying, since ZoneAlarm only needs to be told once about it. It does not matter whether I have any gui/display classes linked. We use ROOT for GLAST I/O without plots or any gui libraries, it affects our basic simulation/reconstruction executable. We are in the process of switching to 3.10, with win32gdk on windows from 3.04, win32. Any program, linked against either set of libraries, it seems, tries to contact the DNS.
Since this is during program setup, could there be a static somewhere that runs a IP-access constructor? I don’t know where to look.
A question about win32gdk perhaps for another thread is that it aborts on 8-bit color, a downer since my Terminal Server seems only to allow that.
To help understanding this problem, could you try with version 3.10/02
with the win32 and win32gdk versions.
With the win32gdk version, I see a statement in the GDK lib about
access to some OLE service. Valeriy Onuchin will look into this.
In case, you do not see the problem with the win32 version, it would be
a good indication to narrow down the search in the GDK lib itself.
Let me know.
Thanks for looking into this.
As I said, the attempt to access the internet is not dependent on whether I link with display or gui code, and it started with 3.04/02, which did not have gdk.
But I followed your suggestion and downloaded the non gdk version of 3.10/02. Wehn I run the standard ROOT executable,
Compiled for win32.
I get the same result, namely that ZoneAlarm pops up its alert dialog. Again, there is no apparent affect on subsequent ROOT processing whether or not I allow this access.
When initializing TWinNTSystem, there is call to GetHostByName
that likely calls your name server. This could be the cause of the alarm.
I see the code that you refer to, and when I get a little time I might install the debug version so I can set breakpoints.
But I am still confused: the attempt to access the internet occurs before main program execution, long before any of our ROOT code is invoked. Thus it must be a static variable in the ROOT system somewhere that is being initialized. I don’t see any such in TWinNTSystem.
A possible explanation:
The TROOT object is a static object created when loading the dll.
The TROOT constructor has a TUUID object. To build the TUUID,
a call to TUUID::GetNodeIdentifier is executed. This in turn calls
is ZoneAlarm free program? Where can I get it to
have a “closer” look at the problem?
Thanks. Regards. Valeriy
I downloaded ZoneAlarm and can confirm
that when root.exe is started it makes a call
to DNS server (188.8.131.52 or 184.108.40.206 in my case) by calling “GetHostByName”. Should we change it?
I’ll look for solution.
Just to let you know that Toby is not the only one with this “problem”: I’m also using Root on Windows XP with ZoneAlarm, and I’m also seeing this (and annoyed by it…).
If you can find a way to work around this, that would be great…
I have the same problem with ZoneAlarm as Toby described above. Did you guys find a solution and meanwile fix the probem?
I narrowed it also down to the statement when booking a histogram by:
gunDir= new TH2D(“gunDir”, “Primary particle direction” , 30, -0.15, 0.15, 30, -0.15, 0.15);
I’m using ROOT 4.02/00 on WinXP and Visual C++.NET. Is there anything I can set in ZoneAlarm other than turning it off?
Thanks for your help.
the “issue” comes from calling GetHostByName() to get the machine’s IP address. This is needed by the TUUID class to create a uuid (which has, as one part, the machine’s IP address). On Unix/Linux systems gethostbyname() typically first consults the /etc/hosts file and then DNS (this order can be configured in the /etc/host.conf file, the default being the hosts file, then DNS, but a sys admin can change this default so nothing is guaranteed in this respect). On windows however, the hosts file can be configured in $WINDIR/driver/etc/hosts, but it will always be used after DNS has been tried, so that will not help in this case.
Using ZoneAlarm, is see for example that just opening a new cygwin bash shell I get the following DNS calls:
bash.exe, hostname.exe, uname.exe
where the last two are coming from my .bash_profile. Even calling vim.exe triggers a DNS call, so it is not something ROOT specific.
Any suggestion by Windows experts on how to obtain the host IP address without going through the DNS is welcome. like checking directly the IP address of the active network interface.
Hi Fons, wait,
I suggest to call GetHostByName()
when it’s really needed, i.e.
before writing TObject to file.
why don’t you generally block/allow the internet-access from ROOT?
It’s possible that this is required some times (once for every ROOT-version) but I htink this works fine.
(The second (but very strange) method is to start a DNS-server on your host. )