[vtkusers] Serious(?) flaws in vtk code

Luca Picello luca.picello at libero.it
Wed Mar 10 16:02:36 EST 2004


Well... I think BCB6 will survive for a long time because the new 
BuilderX is a completely different product and it is not mature yet.
And probably it will be not for a long time: there are rumors that 
Borland will change again the BuilderX platform to include wxwindows ( 
http://www.wxwindows.org ) libraries.
So stay tuned and help all of us that use BCB all day long to fix and 
upgrade it more because it is powerful but not perfect, yet!
I hope to have time asap to fix the "ProjectDemo" myself but I am new to 
VTK and I do not know how to do it yet.
Right now the problem disappear even if you compile your project and 
package using runtime dll (Options->Linker->Use dynamic RTL).
Is it a real problem to include borland dlls till this problem is solved?

Luca

PS: if you believe microsoft .net will be the future... well.. it is a 
completely different product from previous visual studio and it is at 
the same point of builderx.
Use both of them at your risk :-)
Take care



John Biddiscombe wrote:

>VTK\Examples\GUI\Win32\vtkBorland\ProjectDemo
>
>it's the original Borland demo, which has never been attended to. Please fix
>it if you have time. Mind you, now that Borland are dumping BCB, it's worth
>discouraging people from adopting it.
>
>JB
>
>----- Original Message ----- 
>From: "William A. Hoffman" <billlist at nycap.rr.com>
>To: "Xianjin Yang" <Yang at AGIUSA.COM>; <vtkusers at vtk.org>
>Cc: "Per Dalgas Jakobsen" <pdj at maridan.dk>
>Sent: Wednesday, March 10, 2004 2:13 PM
>Subject: RE: [vtkusers] Serious(?) flaws in vtk code
>
>
>  
>
>>Where is Project_vtkDemo?  Can it be fixed so other people
>>do not run into this problem?
>>
>>-Bill
>>
>>
>>At 12:32 PM 3/9/2004, Xianjin Yang wrote:
>>
>>    
>>
>>>Dear all,
>>>
>>>I have been using BCB6 + VTK 4.2 and had similar problems before.
>>>To solve Access violation problem related to DummyCritSect.Lock() in the
>>>      
>>>
>destructor of vtkPolyData (~vtkPolyData), I did these in the
>Project_vtkDemo:
>  
>
>>>1) Remove everything in the FormDestroy event handler.
>>>2) Add this FormClose event handler. All problems should be gone!!
>>>
>>>void __fastcall TVTK_Form::FormClose(TObject *Sender, TCloseAction
>>>      
>>>
>&Action)
>  
>
>>>{
>>> if (shrink) shrink->Delete();
>>> vtkTimerLog::DeallocateTimerLog();
>>> vtkWindow1->GetRenderer()->RemoveAllProps();
>>> // VTK_Form->Release();
>>> // Application->Terminate();
>>>}
>>>I am not sure if the last two lines of code are required in BCB6.
>>>
>>>vtkTimerLog::DeallocateTimerLog() is a fix discussed here:
>>>      
>>>
>><http://public.kitware.com/pipermail/vtkusers/2003-August/019522.html>http:
>>    
>>
>//public.kitware.com/pipermail/vtkusers/2003-August/019522.html
>  
>
>>>Xianjin Yang, Ph.D.
>>>
>>>
>>>
>>>-----Original Message----- 
>>>From: William A. Hoffman
>>>      
>>>
>[<mailto:billlist at nycap.rr.com>mailto:billlist at nycap.rr.com]
>  
>
>>>Sent: Tuesday, March 09, 2004 10:18 AM
>>>To: Per Dalgas Jakobsen; vtkusers at vtk.org
>>>Subject: Re: [vtkusers] Serious(?) flaws in vtk code
>>>
>>>I have not looked at the BCB Windows code, however,
>>>it seems that you might be able to move the creation/destruction
>>>of the vtk objects to a different spot.   There must be some method
>>>that is called to initialize the BCB objects, and another one
>>>to destroy them.   You could go to some sort of lazy create if
>>>there is no such method.   Basically, the first time the vtk object
>>>is used, then create the vtk object.  Then when your window gets the
>>>      
>>>
>close event, destroy the vtk object, don't just create and destroy the vtk
>objects in the constructor/destructor of the BCB object. All vtk objects
>should be created after main, and deleted before the end of main, and you
>should have no problem.
>  
>
>>>-Bill
>>>
>>>At 04:19 AM 3/9/2004, Per Dalgas Jakobsen wrote:
>>>      
>>>
>>>>Hi all,
>>>>
>>>>I believe I have found some flaws in the vtk code.
>>>>I think most vtk users are not affected, but us poor souls that are
>>>>forced to use Borland C++ Builder (BCB) are affected.
>>>>        
>>>>
>>>>The problem reveals itself the following way (in my case at least):
>>>>Access violation in the destructor of vtkPolyData (~vtkPolyData) - The
>>>>DummyCritSect.Lock() call fails.
>>>>
>>>>The cause is that DummyCritSect, in certain cases, has already been
>>>>destroyed. In other words: ~vtkPolyData is calling a method in an
>>>>object that is no longer in existence.
>>>>
>>>>Explanation:
>>>>DummyCritSect is a "nonlocal" object which is created before main() is
>>>>executed, and destroyed after main() has returned. This is actually
>>>>what is intended, and quite nice, except when used from within (but not
>>>>exclusively) BCB...
>>>>
>>>>The problem is that the Visual Component Library (VCL), which is the
>>>>foundation of BCB, also seems to be created from a "nonlocal" object.
>>>>This means that BCB Windows and DummyCritSect are created at the same
>>>>point, and destroyed at the same point, but the sequence is undefined.
>>>>
>>>>According to "The C++ Programming Language" by Bjarne Stroustrup:
>>>>------- 
>>>>Section 10.4.9 Nonlocal store:
>>>>
>>>>1) "A variable defined outside any function (that is, global,
>>>>namespace, and class static variables; §C.9) is initialized
>>>>(constructed) before main() is invoked, and any such variable that has
>>>>been constructed will have its destructor invoked after exit from
>>>>main()."
>>>>
>>>>2) "No implementation-independent guarantees are made about the order
>>>>of construction of nonlocal objects in different compilation units."
>>>>
>>>>3) "The order of destruction is similarly implementation-dependent."
>>>>------- 
>>>>
>>>>This means that IF vtk is accessed from a "nonlocal" object, it is
>>>>implementation-dependent wether it works or not. In case of BCB, it
>>>>doesn't :-(
>>>>
>>>>As long as you are not making components containing vtk-code in BCB, it
>>>>is possible to make workarounds, but it seems to be impossible to get
>>>>component-wrapped vtk-code to work correctly.
>>>>
>>>>
>>>>How do we get around this problem?
>>>>I don't think that we should "#ifdef __BORLANDC__" our way out of the
>>>>BCB problem, this will leave the code flawed for projects using
>>>>nonlocal objects. Any thoughts?
>>>>
>>>>
>>>>Best regards
>>>>Per
>>>>
>>>>        
>>>>
>>_______________________________________________
>>This is the private VTK discussion list.
>>Please keep messages on-topic. Check the FAQ at:
>>    
>>
><http://public.kitware.com/cgi-bin/vtkfaq>
>  
>
>>Follow this link to subscribe/unsubscribe:
>>http://www.vtk.org/mailman/listinfo/vtkusers
>>    
>>
>
>_______________________________________________
>This is the private VTK discussion list. 
>Please keep messages on-topic. Check the FAQ at: <http://public.kitware.com/cgi-bin/vtkfaq>
>Follow this link to subscribe/unsubscribe:
>http://www.vtk.org/mailman/listinfo/vtkusers
>.
>
>  
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20040310/0f2345e5/attachment.htm>


More information about the vtkusers mailing list