diff --git a/core/lib/Drupal/Core/Render/Renderer.php b/core/lib/Drupal/Core/Render/Renderer.php
index 6d08e4d81c..bc173913e6 100644
--- a/core/lib/Drupal/Core/Render/Renderer.php
+++ b/core/lib/Drupal/Core/Render/Renderer.php
@@ -779,6 +779,9 @@ protected function doCallback($callback_type, $callback, array $args) {
         $callback = explode('::', $callback, 2);
       }
     }
+    if (!is_callable($callback)) {
+      throw new \RuntimeException(sprintf('Callback %s must be a callable, instead a %s was given. %s', $callback_type, gettype($callback), var_export($callback, TRUE)));
+    }
     $message = sprintf('Render %s callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', $callback_type, '%s');
     // Add \Drupal\Core\Render\Element\RenderCallbackInterface as an extra
     // trusted interface so that:
