[vtkusers] VTK+JAVA Crash in mouse events

Shyam Prakash ramakrishna.prakash at quest-global.com
Thu Nov 20 06:39:07 EST 2003


Jeff,
	This version seems to be stable so far.

Thanks
Shyam

> -----Original Message-----
> From: Jeff Lee [mailto:jeff at cdnorthamerica.com]
> Sent: Wednesday, November 19, 2003 7:39 PM
> To: Shyam Prakash
> Cc: 'vtk users'
> Subject: Re: [vtkusers] VTK+JAVA Crash in mouse events
> 
> Looks like I missed a spot - where a new linesource is being created
on
> every doAction().  Made it an ivar and haven't been able to make it
> crash...  same deal as before, but this time passing a reference to ss
> to the planewidget, and then overriding the value on the next
doAction.
> the previous ss was eligible to be finalized, and when that happened,
> the hs error occurred.  attached the revised test code....
> -Jeff
> 
> Shyam Prakash wrote:
> 
> >Jeff,
> >	I tried the modified code that you sent me. After much effort,
> >the code crashed with following dump.
> >
> >
> >Function=vtkMergePoints::InsertUniquePoint+0xDC
> >Library=d:\VTKBinary\vtkFiltering.dll
> >Source file = D:\VTK-4.2.2\Filtering\vtkMergePoints.cxx : 111
> >
> >Current Java thread:
> >	at vtk.vtkGenericRenderWindowInteractor.MouseMoveEvent_2(Native
> >Method)
> >	at
>
>vtk.vtkGenericRenderWindowInteractor.MouseMoveEvent(vtkGenericRenderWin
d
> >owInteractor.java:19)
> >	at vtk.vtkCanvas.mouseDragged(vtkCanvas.java:209)
> >
> >
> >and
> >
> >Function=vtkPolyDataToImageStencil::IsTypeOf+0x7A18B
> >Library=d:\VTKBinary\vtkHybrid.dll
> >
> >Current Java thread:
> >	at vtk.vtkGenericRenderWindowInteractor.MouseMoveEvent_2(Native
> >Method)
> >	at
>
>vtk.vtkGenericRenderWindowInteractor.MouseMoveEvent(vtkGenericRenderWin
d
> >owInteractor.java:19)
> >
> >
> >One thing I have noticed is the crash happens in the presence of the
> >plane widget. Without it, I could not simulate the crash(even after a
> >hard try). So I guess it is not only the gc() that is causing the
> >problem. Do we need to check for "rendering" boolean value of
> >vtkPanel.java before calling iren.MouseMoveEvent() or others like
> >
> >Lock();
> >If(!rendering){
> >	iren.MouseMoveEvent();
> >}
> >UnLock();
> >
> >I did this, but no improvements.
> >
> >Thanks
> >Shyam
> >
> >
> >
> >
> >
> >-----Original Message-----
> >From: Jeff Lee [mailto:jeff at cdnorthamerica.com]
> >Sent: Wednesday, November 19, 2003 6:02 PM
> >To: Shyam Prakash
> >Subject: Re: [vtkusers] VTK+JAVA Crash in mouse events
> >
> >
> >
> >Shyam Prakash wrote:
> >
> >
> >
> >>Jeff,
> >>	I guess I need to get my self out of java-centric thinking. This
> >>is how I understand from you. "It is best to make all the
> >>
> >>
> >actors/mappers
> >
> >
> >>method level variables or make sure I don't re-instantiate the class
> >>level actor variable until I remove it from the renderer". Can I
please
> >>have your comments.
> >>
> >>
> >>
> >>
> >Just print out the reference count of your actor in your previous
code,
> >and you'll see what's happening - it stays at 1 the whole time,
> >meanwhile you were creating all these new actors - where do they go?
> >When you assing a new value, the old one is eligible for garbage
> >collection.  If you don't want this to happen, don't reuse ivars like
> >that, or clean up after yourself by removing the unrefrenced object
from
> >
> >whatever is using it (like the renderer and the planewidget).
> >-Jeff
> >
> >
> >
> >>Thanks
> >>Shyam
> >>
> >>-----Original Message-----
> >>From: Jeff Lee [mailto:jeff at cdnorthamerica.com]
> >>Sent: Wednesday, November 19, 2003 5:16 PM
> >>To: Shyam Prakash
> >>Cc: vtkusers at public.kitware.com
> >>Subject: Re: [vtkusers] VTK+JAVA Crash in mouse events
> >>
> >>
> >>
> >>Shyam Prakash wrote:
> >>
> >>
> >>
> >>
> >>
> >>>Jeff,
> >>>	The program that I sent you was just to demonstrate my problem.
> >>>Your idea of actors getting gc'ed while they are still in renderer
> >>>
> >>>
> >>>
> >>>
> >>could
> >>
> >>
> >>
> >>
> >>>be a possibility. But then I can not convince my self how this
could
> >>>happen as the actor still has a reference to the renderer. Do you
have
> >>>any idea?
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>The way you coded it, as I recall, was to assign an ivar called
actor =
> >>
> >>
> >
> >
> >
> >>new vtkActor() and then added it to the renderer.  The next time you
do
> >>
> >>
> >
> >
> >
> >>this, the previous actor has no more references (even though the
> >>Renderer in c++ added a consumer, this is not the same as adding a
> >>reference).  Since you added the old one, but did not remove it, the
> >>object was finalized while still in the renderer, causing the
errors.
> >>In short, the actor doesn't have a reference to the renderer, only a
> >>list of consumers.
> >>-Jeff
> >>
> >>
> >>
> >>
> >>
> >>>Thanks
> >>>Shyam
> >>>
> >>>-----Original Message-----
> >>>From: vtkusers-admin at vtk.org [mailto:vtkusers-admin at vtk.org] On
Behalf
> >>>Of Jeff Lee
> >>>Sent: Tuesday, November 18, 2003 8:06 PM
> >>>To: Shyam Prakash
> >>>Cc: vtkusers at public.kitware.com
> >>>Subject: Re: [vtkusers] VTK+JAVA Crash in mouse events
> >>>
> >>>I think the main problem was that your actors were getting gc'ed
while
> >>>
> >>>
> >
> >
> >
> >>>the mouse was moving.  You should be careful to remove actors from
the
> >>>
> >>>
> >
> >
> >
> >>>renderer which might be garbage collected for any reason.
> >>>
> >>>
> >Furthermore,
> >
> >
> >>>
> >>>
> >>>
> >>>
> >>
> >>
> >>
> >>
> >>>you were creating a new plane widget every time the action was
> >>>
> >>>
> >>>
> >>>
> >>triggered
> >>
> >>
> >>
> >>
> >>>- was that your intent?  If so, you need to remove the old one from
> >>>
> >>>
> >the
> >
> >
> >>>
> >>>
> >>>
> >>>
> >>
> >>
> >>
> >>
> >>>renderer first.  In the future, if you see this type of behavior,
it
> >>>
> >>>
> >is
> >
> >
> >>>
> >>>
> >>>
> >>>
> >>
> >>
> >>
> >>
> >>>almost guaranteed to be related to some object unwittingly being a
> >>>candidate for garbage collection, and the object gets deleted while
> >>>still in the renderer.  I attached a better-behaving version of
your
> >>>code, but it may not be what you intended.
> >>>-Jeff
> >>>
> >>>Shyam Prakash wrote:
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>>Hello,
> >>>>
> >>>>          I had encountered this problem earlier too. The program
> >>>>suddenly crashes in mouseMove, mouseDrag,mousePress or
mouseRelease
> >>>>events with a message similar to the message given below.
> >>>>
> >>>>
> >>>>
> >>>>Current Java thread:
> >>>>
> >>>>    at
vtk.vtkGenericRenderWindowInteractor.MouseMoveEvent_2(Native
> >>>>Method)
> >>>>
> >>>>    at
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
>
>>>vtk.vtkGenericRenderWindowInteractor.MouseMoveEvent(vtkGenericRenderW
i
> >>>
> >>>
> >n
> >
> >
> >>>
> >>>
> >>>
> >>>
> >>d
> >>
> >>
> >>
> >>
> >>>owInteractor.java:19)
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>>    at vtk.vtkCanvas.mouseDragged(vtkCanvas.java:209)
> >>>>
> >>>>    at
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>java.awt.Component.processMouseMotionEvent(Component.java:5182)
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>>    at java.awt.Component.processEvent(Component.java:4935)
> >>>>
> >>>>
> >>>>
> >>>>I am not sure what exactly could be the problem. I am using vtk
4.2.2
> >>>>
> >>>>
> >
> >
> >
> >>>>on Windows2k with jdk 1.4.1_02. Attached is a sample code. When I
run
> >>>>
> >>>>
> >
> >
> >
> >>>>this code, it often crashes in my machine when I rotate the model
> >>>>vigorously(in combination with resizing the window). My gut
feeling
> >>>>
> >>>>
> >is
> >
> >
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>
> >>>
> >>>
> >>>
> >>>>it could be because of the presence of vtkImplicitPlaneWidget. Is
> >>>>there anyway I can avoid this?
> >>>>
> >>>>
> >>>>
> >>>>Thanks
> >>>>
> >>>>Shyam
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>_______________________________________________
> >>>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
> >>
> >>
> >>
> >>
> >>
> >>
> >
> >_______________________________________________
> >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
> >
> >
> >
> >




More information about the vtkusers mailing list