[vtkusers] crash: EXCEPTION_ACCESS_VIOLATION error in native code outside th e Java VM

Jeff Lee jeff at cdnorthamerica.com
Fri Sep 20 06:56:07 EDT 2002


Hi Lichan,
Are you using vtk4.0 release or vtk4.x?  There are a couple of possible 
solutions to your problem.   The first rule is to NEVER call  
vtkRenderWindow.Render() directly from java.  You should always use 
vtkPanel's Render() method which does the appropriate mutex locking of 
the awt drawing surface.  The problem stems from the fact that X is not 
thread safe and that attempts to modify the drawing surface from 
different threads can cause this behavior.  The most rigorous way to 
ensure this never happens is to place mutex locks around all methods 
which can possibly modify the drawing surface.  vtkRenderWindow.Render() 
is one of these methods.  Any method that calls glxMakeCurrent() is also 
a candidate for locking.  vtkPanel tries to do this locking for you in 
places  where problems are known to exist.  First try using 
vtkPanel.Render() directly instead of vtkRenderWindow.Render().  If the 
problem still occurs, then expose two public methods on vtkPanel called 
lock() and unlock() which just call Lock() and UnLock() respectively. 
 Now you can place a lock/unlock around your button press event and see 
if it fixes the problem.  Please let me know if this fixes your problem.
-Jeff

Lichan.Hong at parc.com wrote:

>I have been building my application using the VTK Java interface. Recently, my
>system crashes frequently, resulting in the following error message:
>
>An unexpected exception has been detected in native code outside the VM.
>Unexpected Signal : EXCEPTION_ACCESS_VIOLATION occurred at PC=0x23A73EFD
>Function=[Unknown.]
>Library=C:\Lichan\com\kitware\vtkCommonJava.dll
>
>NOTE: We are unable to locate the function name symbol for the error
>      just occurred. Please refer to release documentation for possible
>      reason and solutions.
>
>Current Java thread:
>	at vtk.vtkPointSet.GetPoints_13(Native Method)
>	at vtk.vtkPointSet.GetPoints(vtkPointSet.java:64)
>	at MyFilter.executeMethod(MyFilter.java:81)
>	at vtkPanel.RenderInternal(Native Method)
>	at vtkPanel.render(vtkPanel.java:157)
>	- locked <02F4E1D0> (a vtkPanel)
>	......	
>	at java.awt.Button.processActionEvent(Button.java:381)
>	......
>
>Essentially, what I try to do is: when a certain button is pressed, it triggers an animation. During
>this animation, class "MyFilter" deforms a piece of geometry and then I call render() of vtkPanel
>to generate a new frame. "MyFilter", a subclass of vtkPragrammableFilter, is a simple class
>that I wrote. Its method "executeMethod()" preforms the geometry deformation.
>
>Since my animation is running in a sequential manner: 
>				render
>				geometry update
>				render
>				geometry update
>				......
>I am deeply puzzled by the above error message. 
>
>Any helps will be greatly appreciated.
>
>Lichan
>
>_______________________________________________
>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://public.kitware.com/mailman/listinfo/vtkusers
>




More information about the vtkusers mailing list