Java-Gaming.org Java4K winners: [ by our judges | by the community ]         
Featured games (67)
games approved by the League of Dukes
Games in Showcase (∞)
games submitted by our members



News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  Print  
  ABEND on Shutdown  (Read 1788 times)
0 Members and 1 Guest are viewing this topic.
Offline josgood

JGO n00b
*

Posts: 13


Nudge reality.


« on: 2003-06-23 16:56:45 »

JOGL Team (Chris, Ken, etc)-


[I'm still an open source plebe, so I don't know what the customs are.  Please forgive.]

JOGL's Gears.java issues a Windows application error when I close the app.  Something about memory location 0x0020 being unreadable.

I had the same problem with Magician.  It happens when the JVM exits before the rendering thread terminates gracefully (e.g. no cleanup, might be in the middle of a frame update, whatever).

My fix was to register a system shutdown thread that would shutdown all the rendering threads.  The code snippet from Magician's Bootstrap.java is
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
      static ShutdownThread _reaper = null;
     
      static
      {
            Runtime runtime = Runtime.getRuntime();
            _reaper = new ShutdownThread();
            runtime.addShutdownHook( _reaper );
      }
     
      // Package visible only.
     static void shutMeDown( GLDrawable drawable )
      {
            _reaper.addDrawable( drawable );
      }


The ShutdownThread.java is very straightforward.  It extends Runnable, has an addDrawable(...) method, a run() method which calls destroy() on each registered GLDrawable and that's about it.  It uses a WeakHashMap, so it won't prevent garbage collection.

Each GLDrawable in Magician registers itself from within the constructor.

I guess that's enough information to roll something into JOGL.

Cheers, Jason
Offline Ken Russell

JGO Kernel
*****

Posts: 3446
Medals: 3


Java games rock!


« Reply #1 on: 2003-06-24 00:57:22 »

Jason: thanks for your report. What version of Windows and what graphics card does this occur with? Currently we've tested with NVidia cards on Windows and Linux, as well as the Sun XVR-1200 on Solaris, and haven't seen this problem. Note that the windowClosing listener for the top-level frame calls animator.stop(), which should prevent rendering during application teardown. Before we added the call to Animator.stop() we would routinely see (Java) exceptions during teardown, and if Control-C is used to terminate the application then we expect the behavior you describe.

Regardless please file a bug report using the Issue Tracking at http://jogl.dev.java.net/ so we can track this.
Pages: [1]
  Print  
 
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Page created in 0.114 seconds with 21 queries.