phacility/phabricator · error · Exception

Failed to load favicon template builtin "%s".

Error message

Failed to load favicon template builtin "%s".

What it means

The selected favicon template is a Celerity builtin (source-type 'builtin'); PhabricatorFile::loadBuiltin($viewer, $resource['source']) returned no file, meaning the builtin by that name could not be loaded or generated. The template map references a builtin resource that does not actually exist in the builtin registry.

Source

Thrown at src/applications/files/favicon/PhabricatorFaviconRef.php:420

          pht(
            'Found no template resource (for emblem "%s") with dimensions '.
            '%dx%d.',
            $emblem,
            $width,
            $height));
      }
    }

    $scores = msortv($scores, 'getSelf');
    $best_score = head_key($scores);

    $viewer = $this->getViewer();

    $resource = $all_resources[$best_score];
    if ($resource['source-type'] === 'builtin') {
      $file = PhabricatorFile::loadBuiltin($viewer, $resource['source']);
      if (!$file) {
        throw new Exception(
          pht(
            'Failed to load favicon template builtin "%s".',
            $resource['source']));
      }
    } else {
      $file = id(new PhabricatorFileQuery())
        ->setViewer($viewer)
        ->withPHIDs(array($resource['source']))
        ->executeOne();
      if (!$file) {
        throw new Exception(
          pht(
            'Failed to load favicon template with PHID "%s".',
            $resource['source']));
      }
    }

    return array(

View on GitHub (pinned to 5720a38cfe)

Solutions

  1. Correct the resource 'source' to a builtin that exists (verify the name against the Celerity builtin map / resources/builtin directory)
  2. If it is a genuinely new builtin, register its file so loadBuiltin() can produce it
  3. After fixing, re-request the favicon to bypass any cached failure
Defensive patterns

Strategy: try-catch

Validate before calling

$file = PhabricatorFile::loadBuiltin($viewer, $resource['source']);
if (!$file) {
  // builtin missing: skip this template entry instead of throwing
}

Try / catch

catch Exception, log the missing builtin name, and fall back to another registered template for the same dimensions.

Prevention

When it happens

Trigger: A favicon template whose 'source' names a builtin that is not registered — a typo, a builtin removed or renamed during an upgrade, or a custom builtin whose registration is missing.

Common situations: Upgrades that rename or delete builtins while custom favicon config keeps the old name; forks adding template entries pointing at never-registered builtins.

Related errors


AI-assisted analysis of phacility/phabricator@5720a38cfe (2026-08-21). Data as JSON: /api/errors/bef996cdc09cc57c. Report an issue: GitHub.