diff --git a/src/Main/globals.cxx b/src/Main/globals.cxx
index c083f326f..9c714f6cb 100644
--- a/src/Main/globals.cxx
+++ b/src/Main/globals.cxx
@@ -27,6 +27,9 @@
 #include <boost/foreach.hpp>
 #include <algorithm>
 
+#include <osgViewer/Viewer>
+#include <osgDB/Registry>
+
 #include <simgear/structure/commands.hxx>
 #include <simgear/misc/sg_path.hxx>
 #include <simgear/misc/sg_dir.hxx>
@@ -209,6 +212,12 @@ FGGlobals::~FGGlobals()
     subsystem_mgr->remove("model-manager");
     _tile_mgr.clear();
 
+    // don't cancel the pager until after shutdown, since AIModels (and
+    // potentially others) can queue delete requests on the pager.
+    renderer->getViewer()->getDatabasePager()->cancel();
+    renderer->getViewer()->getDatabasePager()->clear();
+    osgDB::Registry::instance()->clearObjectCache();
+    
     // renderer touches subsystems during its destruction
     set_renderer(NULL);
     _scenery.clear();