diff --git a/core/lib/Drupal/Core/Form/FormValidator.php b/core/lib/Drupal/Core/Form/FormValidator.php
index 10678e3..4d028d2 100644
--- a/core/lib/Drupal/Core/Form/FormValidator.php
+++ b/core/lib/Drupal/Core/Form/FormValidator.php
@@ -85,7 +85,9 @@ public function executeValidateHandlers(&$form, FormStateInterface &$form_state)
     }
 
     foreach ($handlers as $callback) {
-      call_user_func_array($form_state->prepareCallback($callback), array(&$form, &$form_state));
+      if (!$form_state->isValidationComplete()) {
+        call_user_func_array($form_state->prepareCallback($callback), array(&$form, &$form_state));
+      }
     }
   }
 
diff --git a/core/tests/Drupal/Tests/Core/Form/FormValidatorTest.php b/core/tests/Drupal/Tests/Core/Form/FormValidatorTest.php
index 5fe5a09..53f279b 100644
--- a/core/tests/Drupal/Tests/Core/Form/FormValidatorTest.php
+++ b/core/tests/Drupal/Tests/Core/Form/FormValidatorTest.php
@@ -8,6 +8,8 @@
 namespace Drupal\Tests\Core\Form;
 
 use Drupal\Core\Form\FormState;
+use Drupal\Core\Form\FormStateInterface;
+use Drupal\Core\Form\FormValidator;
 use Drupal\Tests\UnitTestCase;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\RequestStack;
@@ -297,6 +299,27 @@ public function testExecuteValidateHandlers() {
   }
 
   /**
+   * @covers ::executeValidateHandlers
+   */
+  public function testExecuteValidateHandlersSuppressValidation() {
+    $request_stack = new RequestStack();
+    $form_validator = new FormValidator($request_stack, $this->getStringTranslationStub(), $this->csrfToken, $this->logger, $this->formErrorHandler);
+
+    $form = [];
+    $form_state = new FormState();
+    // The first handler should prevent the second from running.
+    $handlers[] = function (array $form, FormStateInterface $form_state) {
+      $form_state->setValidationComplete();
+    };
+    $handlers[] = function (array $form, FormStateInterface $form_state) {
+      throw new \Exception('This should not run.');
+    };
+    $form_state->setValidateHandlers($handlers);
+
+    $form_validator->executeValidateHandlers($form, $form_state);
+  }
+
+  /**
    * @covers ::doValidateForm
    *
    * @dataProvider providerTestRequiredErrorMessage
