Hi Kelvin,
thank you for a quick reply. Unfortunately, it is not easy for us to send you our applet since it needs a connection to server to load examples. We are currently preparing the local application to send you for evaluation, so that should do it.
Meanwhile, I could probably give you some clues on why we have this exception. Since we need to run our applet multiple time without unloading the VM we are very concerned about releasing memory after the applet is gone. So we are doing extensive clean-up at the applet destroy() call, including detaching Java3D tree, view branch, removing canvas from the view and removing all window structure. I am pretty sure that this clean-up is responsible for the exception that causes subsequent hanging, in particular removing window structure seems to be the most suspicious.
I also have the examples of one more exception that only happens if some geometries were drawn in immediate mode, and NOT reattached to the retained mode tree later:
java.lang.NullPointerException:
at javax.media.j3d.RenderBin.removeOrderedBin(RenderBin.java:4558)
at javax.media.j3d.RenderBin.removeAllRenderAtoms(RenderBin.java:4529)
at javax.media.j3d.MasterControl.unregisterView(MasterControl.java:1713)
at javax.media.j3d.MasterControl.handlePendingRequest(MasterControl.java:2648)
at javax.media.j3d.MasterControl.doWork(MasterControl.java:2570)
at javax.media.j3d.MasterControlThread.run(MasterControlThread.java:28)
This exception is thrown during VirtualUniverse.removeAllLocales() or, if I comment it out, any JPanel.remove() or JPanel.removeAll() call for the panel that contains Canvas3D. Again, if geometries drawn in immediate mode are later attached to the retained mode tree, the clean-up magically proceeds fine. Unfortunately, commenting out these methods, especially removeAllLocales() is not an option for us, since it leaves too much memory not released after the exit.
Hope this will give you some idea about what is going on. I will try to investigate it further as well as what is needed for clean-up.
- Yuri.
-----Original Message-----
From: Kelvin Chung [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, May 15, 2001 2:13 PM
To: [EMAIL PROTECTED]
Cc: [EMAIL PROTECTED]
Subject: Re: [JAVA3D] Exception on exiting applet
Hi Yuri,
It is a bug in our library, can you please send
us your applet to investigate ?
Thanks for your bug report.
- Kelvin
---------------
Java 3D Team
Sun Microsystems Inc.
>MIME-Version: 1.0
>Date: Tue, 15 May 2001 13:59:36 -0400
>From: Yuri Nikishkov <[EMAIL PROTECTED]>
>Subject: [JAVA3D] Exception on exiting applet
>To: [EMAIL PROTECTED]
>
>java.lang.NullPointerException
> at
>javax.media.j3d.MasterControl.addToStateThreads(MasterControl.java:2072)
> at
>javax.media.j3d.MasterControl.updateWorkThreads(MasterControl.java:2395)
> at javax.media.j3d.MasterControl.doWork(MasterControl.java:2579)
> at
>javax.media.j3d.MasterControlThread.run(MasterControlThread.java:28)
>
>Did anybody ever have this exception? It happens sometimes on the exit from
>our applet. If Java VM was not unloaded, the next attempt to start Java3D
>would result in browser hanging. What can be the reason and how to get rid
>of it?
>
>Thanks,
>- Yuri.