#766·camoufox

Bundled fingerprint presets can crash startup when WebGL pair is unsupported

Author: PierreMesureCreated Sep 10, 2026Updated Sep 10, 2026

Describe the bug:

fingerprint_preset=True can fail nondeterministically during browser startup because some bundled real-device presets contain WebGL vendor/renderer pairs that do not exist in webgl_data.db for the preset's OS.

For Firefox 152 on macOS, 3 of the 67 candidate presets contain:

vendor: ATI Technologies Inc.
renderer: Radeon HD 3200 Graphics, or similar

The database only contains that renderer under vendor AMD, with Linux-only probability. When one of those three presets is selected, launch_options() raises:

ValueError: No WebGL data found for vendor "ATI Technologies Inc." and renderer "Radeon HD 3200 Graphics, or similar"

This explains why the same application can launch and restart successfully for a while before suddenly failing. An audit against sample_webgl() found that this is not limited to one pair:

  • fingerprint-presets.json: 9 of 123 presets unsupported
  • fingerprint-presets-v150.json: 30 of 312 presets unsupported

The mismatch is present on current main. This is adjacent to #729 and #743, but those address cross-property coherence and explicitly preserve presets; they do not prevent unsupported preset/database pairs from reaching sample_webgl().

Expected behavior: every preset eligible for random selection should be launchable with the bundled WebGL database. Unsupported presets should not crash browser startup.

Screenshots:

Not applicable.

To Reproduce:

This deterministic reproduction selects the first affected bundled preset:

python
import json
from pathlib import Path

import camoufox
from camoufox.utils import launch_options

preset_path = Path(camoufox.__file__).parent / "fingerprint-presets-v150.json"
preset = json.loads(preset_path.read_text())["presets"]["macos"][0]

launch_options(headless=True, os="macos", fingerprint_preset=preset)

Actual result:

ValueError: No WebGL data found for vendor "ATI Technologies Inc." and renderer "Radeon HD 3200 Graphics, or similar"

The production form is simply:

python
Camoufox(headless=True, os="macos", fingerprint_preset=True)

It fails when random selection reaches one of the unsupported presets.

Version:

cloverlabs-camoufox 0.6.0
Browser v152.0.4-beta.30
BrowserForge v1.2.4
Playwright v1.60.0
Python 3.14.2
macOS 26.6.2 arm64