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

From: Rene Brun (Rene.Brun@cern.ch)
Date: Wed Jun 06 2001 - 15:27:49 MEST


Hi Valery,

I have introduced your mods to TCanvas, hoping that this solves the
problems experienced with Axel that I cannot reproduce.

Rene Brun

Valeri Fine wrote:
> 
> > 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.
> 
>   --------------------------------------------------------------------------------
> 
>                      Name: canvas.diff
>    canvas.diff       Type: unspecified type (application/octet-stream)
>                  Encoding: quoted-printable



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