remotion-dev/remotion · critical · Error
Failed to create WebGL program
Error message
Failed to create WebGL program
What it means
Thrown by linkProgram in the glow runtime when gl.createProgram() returns null after both shaders compiled. Same allocation-failure class as the flannel program: context loss or VRAM/object exhaustion, not a link error (link failures surface as 614).
Source
Thrown at packages/effects/src/glow/glow-runtime.ts:78
gl.shaderSource(shader, source);
gl.compileShader(shader);
if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
const log = gl.getShaderInfoLog(shader);
gl.deleteShader(shader);
throw new Error(`Glow shader compile failed: ${log ?? '(no log)'}`);
}
return shader;
};
const linkProgram = (
gl: WebGL2RenderingContext,
vs: WebGLShader,
fs: WebGLShader,
): WebGLProgram => {
const program = gl.createProgram();
if (!program) {
throw new Error('Failed to create WebGL program');
}
gl.attachShader(program, vs);
gl.attachShader(program, fs);
gl.linkProgram(program);
if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
const log = gl.getProgramInfoLog(program);
gl.deleteProgram(program);
throw new Error(`Glow program link failed: ${log ?? '(no log)'}`);
}
return program;
};
const createProgram = (
gl: WebGL2RenderingContext,
vertexSource: string,
fragmentSource: string,View on GitHub (pinned to 78fe4bb3fd)
Solutions
- Lower the concurrent glow effect count.
- Retry on a fresh Chrome process.
- Use a host with more GPU resources.
Defensive patterns
Strategy: retry
Try / catch
let effect;
for (let attempt = 0; attempt < 3; attempt++) {
try {
effect = glow(params);
break;
} catch (err) {
if (attempt === 2 || !/WebGL|program/i.test(String(err))) throw err;
await new Promise((r) => setTimeout(r, 200 * (attempt + 1)));
}
} Prevention
- Glow creates four GL programs per effect; keep concurrent glow layer count modest.
- Render on a host with adequate GPU memory.
- Retry transient context loss on a fresh Chrome process.
When it happens
Trigger: Lost context between shader compile and program creation; many simultaneous glow programs (extract, horizontal blur, vertical blur, composite) exhausting program pools.
Common situations: Multiple glow layers each creating four programs; headless render close to GPU object limits.
Related errors
- Failed to create WebGL program
- Failed to create WebGL shader
- Failed to create WebGL texture
- Failed to create WebGL vertex array
- Failed to create WebGL buffer
AI-assisted analysis of remotion-dev/remotion@78fe4bb3fd (2026-08-12).
Data as JSON: /api/errors/c750170de62c57cf.
Report an issue: GitHub.