diff --git a/includes/session.inc b/includes/session.inc
index 84d1983..862d1ed 100644
--- a/includes/session.inc
+++ b/includes/session.inc
@@ -239,8 +239,6 @@ function _drupal_session_write($sid, $value) {
 function drupal_session_initialize() {
   global $user, $is_https;
 
-  session_set_save_handler('_drupal_session_open', '_drupal_session_close', '_drupal_session_read', '_drupal_session_write', '_drupal_session_destroy', '_drupal_session_garbage_collection');
-
   // We use !empty() in the following check to ensure that blank session IDs
   // are not valid.
   if (!empty($_COOKIE[session_name()]) || ($is_https && variable_get('https', FALSE) && !empty($_COOKIE[substr(session_name(), 1)]))) {
@@ -279,6 +277,8 @@ function drupal_session_initialize() {
  * @ingroup php_wrappers
  */
 function drupal_session_start() {
+  session_set_save_handler('_drupal_session_open', '_drupal_session_close', '_drupal_session_read', '_drupal_session_write', '_drupal_session_destroy', '_drupal_session_garbage_collection');
+  
   // Command line clients do not support cookies nor sessions.
   if (!drupal_session_started() && !drupal_is_cli()) {
     // Save current session data before starting it, as PHP will destroy it.
diff --git a/modules/simpletest/tests/session.test b/modules/simpletest/tests/session.test
index 097503b..9e4ce61 100644
--- a/modules/simpletest/tests/session.test
+++ b/modules/simpletest/tests/session.test
@@ -528,3 +528,25 @@ class SessionHttpsTestCase extends DrupalWebTestCase {
   }
 }
 
+class SessionLogoutTestCase extends DrupalWebTestCase {
+  public static function getInfo() {
+    return array(
+      'name' => 'Session logout tests',
+      'description' => 'Test ability to save session data during logout.',
+      'group' => 'Session'
+    );
+  }
+
+  function setUp() {
+    parent::setUp('session_test_logout');
+  }
+
+  /**
+   * Test ability to save data to the session in hook_exit() on logout.
+   */
+  function testSessionLogout() {
+    $user = $this->drupalCreateUser();
+    $this->drupalLogin($user);
+    $this->drupalLogout();
+  }
+}
\ No newline at end of file
diff --git a/modules/simpletest/tests/session_test_logout.info b/modules/simpletest/tests/session_test_logout.info
new file mode 100644
index 0000000..d7c9e98
--- /dev/null
+++ b/modules/simpletest/tests/session_test_logout.info
@@ -0,0 +1,8 @@
+; $Id$
+name = "Session test logout"
+description = "Support module for session data testing."
+package = Testing
+version = VERSION
+core = 7.x
+files[] = session_test_logout.module
+hidden = TRUE
\ No newline at end of file
diff --git a/modules/simpletest/tests/session_test_logout.module b/modules/simpletest/tests/session_test_logout.module
new file mode 100644
index 0000000..1dbbcf4
--- /dev/null
+++ b/modules/simpletest/tests/session_test_logout.module
@@ -0,0 +1,9 @@
+<?php
+// $Id$
+
+/**
+ * Implements hook_exit().
+ */
+function session_test_logout_exit() {
+  $_SESSION['session_test_logout_exit'] = 'test data';
+}
\ No newline at end of file
-- 
1.8.3.msysgit.0

