Re: [ROOT] Bug in TCanvas / TGWin32 + "0xbaadf00d"

From: Valeri Fine (fine@bnl.gov)
Date: Wed Jun 06 2001 - 02:15:07 MEST


> in my usual environment (Win2k, MSVC6, linking root against my own main()) I
> (and other colleagues) occasionally get an access violation in libGpad.
> Thanks to the debug distribution I could track that problem down to the
> following bug:

Hello, Alex I could not reproduce your problem yet.
However I've looked up TCanvas source and found TCanvas::Build() method first
opens the window ,  THEN it initializes the data-members.

This may cause the problem you observed if the system is fast enough and the user gets
his/her WIN32 Windows  quickly, before  the Build() code had a chance to set fSelected to ZERO.
If this is the case one should get the trouble just Canvas is open and the mouse pointer
is occasionally  within the new born Canvas borders. Is it what you did see ?

This can be fixed by changing the order of the statements in TCanvas ::Build(), namely 
first initialize everything then open the window.

This is due the multithread protection introduced recently was not propagated to 
 the Windows version yet. This correction did solve the some problem for UNIX version 
but introduced some troubles for the WIN32.

Can you apply the diff attached to see whether it helps

> By the way: Does anybody know where members are initialized to "0xbaadf00d"?
> I can't find it anywhere in the root source...

It could be nowhere just some garbage value the system left in the memory from 
the previous memory allocation

   
  Best regards, Valeri

  PS. I hope in week we will see the person who will take care about Windows version of ROOT.







This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:50:48 MET