diff --git a/core/core.services.yml b/core/core.services.yml
index afccb31..79ae472 100644
--- a/core/core.services.yml
+++ b/core/core.services.yml
@@ -626,10 +626,18 @@ services:
   menu_link.static.overrides:
     class: Drupal\Core\Menu\StaticMenuLinkOverrides
     arguments: ['@config.factory']
+
+  # There are two request stack services. One used by Drupal called 'request_stack',
+  # one used by Symfony called 'symfony_request_stack'. This is necessary because
+  # Drupal needs a request stack before Symfony HttpKernel creates one.
   request_stack:
     class: Symfony\Component\HttpFoundation\RequestStack
     tags:
       - { name: persist }
+  symfony_request_stack:
+    class: Symfony\Component\HttpFoundation\RequestStack
+    tags:
+      - { name: persist }
   current_route_match:
      class: Drupal\Core\Routing\CurrentRouteMatch
      arguments: ['@request_stack']
@@ -668,7 +676,7 @@ services:
     class: Stack\StackedHttpKernel
   http_kernel.basic:
     class: Symfony\Component\HttpKernel\HttpKernel
-    arguments: ['@event_dispatcher', '@controller_resolver', '@request_stack']
+    arguments: ['@event_dispatcher', '@controller_resolver', '@symfony_request_stack']
   http_middleware.negotiation:
     class: Drupal\Core\StackMiddleware\NegotiationMiddleware
     tags:
diff --git a/core/lib/Drupal/Core/DrupalKernel.php b/core/lib/Drupal/Core/DrupalKernel.php
index d6c6f45..46a2b3b 100644
--- a/core/lib/Drupal/Core/DrupalKernel.php
+++ b/core/lib/Drupal/Core/DrupalKernel.php
@@ -549,6 +549,13 @@ public function preHandle(Request $request) {
   /**
    * {@inheritdoc}
    */
+  public function postHandle() {
+    $this->container->get('request_stack')->pop();
+  }
+
+  /**
+   * {@inheritdoc}
+   */
   public function discoverServiceProviders() {
     $this->serviceYamls = array(
       'app' => array(),
diff --git a/core/lib/Drupal/Core/DrupalKernelInterface.php b/core/lib/Drupal/Core/DrupalKernelInterface.php
index fea2d98..9c8dc18 100644
--- a/core/lib/Drupal/Core/DrupalKernelInterface.php
+++ b/core/lib/Drupal/Core/DrupalKernelInterface.php
@@ -141,8 +141,14 @@ public function prepareLegacyRequest(Request $request);
   public function preHandle(Request $request);
 
   /**
+   * Helper method that does request related uninitialization.
+   */
+  public function postHandle();
+
+  /**
    * Helper method that loads legacy Drupal include files.
    */
   public function loadLegacyIncludes();
 
+
 }
diff --git a/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php b/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php
index 46f7833..aaa4482 100644
--- a/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php
+++ b/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php
@@ -50,7 +50,11 @@ public function __construct(HttpKernelInterface $http_kernel, DrupalKernelInterf
   public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = TRUE) {
     $this->drupalKernel->preHandle($request);
 
-    return $this->httpKernel->handle($request, $type, $catch);
+    $result = $this->httpKernel->handle($request, $type, $catch);
+
+    $this->drupalKernel->postHandle();
+
+    return $result;
   }
 
 }
diff --git a/core/lib/Drupal/Core/StackMiddleware/RequestStackPush.php b/core/lib/Drupal/Core/StackMiddleware/RequestStackPush.php
new file mode 100644
index 0000000..397ff04
--- /dev/null
+++ b/core/lib/Drupal/Core/StackMiddleware/RequestStackPush.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Core\StackMiddleware\RequestStackPush.
+ */
+
+namespace Drupal\Core\StackMiddleware;
+
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpFoundation\RequestStack;
+use Symfony\Component\HttpKernel\HttpKernelInterface;
+
+class RequestStackPush implements HttpKernelInterface {
+
+  /**
+   * The wrapped HTTP kernel.
+   *
+   * @var \Symfony\Component\HttpKernel\HttpKernelInterface
+   */
+  protected $app;
+
+  /**
+   * The request stack.
+   *
+   * @var \Symfony\Component\HttpFoundation\RequestStack
+   */
+  protected $requestStack;
+
+  /**
+   * Creates a new RequestStackPush instance.
+   *
+   * @param \Symfony\Component\HttpKernel\HttpKernelInterface $app
+   *   The wrapped HTTP kernel.
+   * @param \Symfony\Component\HttpFoundation\RequestStack $request_stack
+   *   The request stack.
+   */
+  public function __construct(HttpKernelInterface $app, RequestStack $request_stack) {
+    $this->app = $app;
+    $this->requestStack = $request_stack;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function handle(Request $request, $type = self::MASTER_REQUEST, $catch = TRUE) {
+    //$this->requestStack->push($request);
+    $result = $this->app->handle($request);
+    //$this->requestStack->pop();
+
+    return $result;
+  }
+
+
+}
\ No newline at end of file
diff --git a/core/tests/Drupal/KernelTests/Core/HttpKernel/RequestStackKernelTest.php b/core/tests/Drupal/KernelTests/Core/HttpKernel/RequestStackKernelTest.php
new file mode 100644
index 0000000..b233d34
--- /dev/null
+++ b/core/tests/Drupal/KernelTests/Core/HttpKernel/RequestStackKernelTest.php
@@ -0,0 +1,48 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\KernelTests\Core\HttpKernel\RequestStackKernelTest.
+ */
+
+namespace Drupal\KernelTests\Core\HttpKernel;
+
+use Drupal\KernelTests\KernelTestBase;
+use Symfony\Component\HttpFoundation\Request;
+
+/**
+ * Tests the usage of the request stack as part of request processing.
+ *
+ * @group http_kernel
+ */
+class RequestStackKernelTest extends KernelTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = ['system'];
+
+  protected function setUp() {
+    parent::setUp();
+
+    $this->installSchema('system', 'router');
+    \Drupal::service('router.builder')->rebuild();
+  }
+
+  public function testRequest() {
+    /** @var \Symfony\Component\HttpFoundation\RequestStack $request_stack */
+    $request_stack = \Drupal::service('request_stack');
+
+    /** @var \Symfony\Component\HttpKernel\HttpKernelInterface $http_kernel */
+    $http_kernel = \Drupal::service('http_kernel');
+
+    $request = Request::create('/');
+    $http_kernel->handle($request);
+
+    $this->assertNull($request_stack->getCurrentRequest());
+    $this->assertNull($request_stack->getMasterRequest());
+  }
+
+
+
+}
