diff --git a/core/includes/errors.inc b/core/includes/errors.inc
index 3fe23b7..4623ee9 100644
--- a/core/includes/errors.inc
+++ b/core/includes/errors.inc
@@ -360,6 +360,10 @@ function _drupal_get_last_caller(&$backtrace) {
  *   A plain-text line-wrapped string ready to be put inside <pre>.
  */
 function format_backtrace(array $backtrace) {
+  // Any keys in the backtrace are optional, as per PHP's official
+  // debug_backtrace() documentation, so we check for their existence before
+  // using them.
+
   $return = '';
   foreach ($backtrace as $trace) {
     $call = array('function' => '', 'args' => array());
@@ -372,12 +376,14 @@ function format_backtrace(array $backtrace) {
     else {
       $call['function'] = 'main';
     }
-    foreach ($trace['args'] as $arg) {
-      if (is_scalar($arg)) {
-        $call['args'][] = is_string($arg) ? '\'' . filter_xss($arg) . '\'' : $arg;
-      }
-      else {
-        $call['args'][] = ucfirst(gettype($arg));
+    if (!isset($trace['args'])) {
+      foreach ($trace['args'] as $arg) {
+        if (is_scalar($arg)) {
+          $call['args'][] = is_string($arg) ? '\'' . filter_xss($arg) . '\'' : $arg;
+        }
+        else {
+          $call['args'][] = ucfirst(gettype($arg));
+        }
       }
     }
     $return .= $call['function'] . '(' . implode(', ', $call['args']) . ")\n";
