remotion-dev/remotion · critical · Error
Failed to create WebGL buffer
Error message
Failed to create WebGL buffer
What it means
Thrown by the glow setup when gl.createBuffer() returns null after the VAO was created. The VBO stores the fullscreen-quad vertex data; null indicates context loss or GPU buffer-object exhaustion.
Source
Thrown at packages/effects/src/glow/glow-runtime.ts:160
const programExtract = createProgram(gl, GLOW_VS, GLOW_EXTRACT_FS);
const programHorizontal = createProgram(gl, GLOW_VS, GLOW_BLUR_FS_HORIZONTAL);
const programVertical = createProgram(gl, GLOW_VS, GLOW_BLUR_FS_VERTICAL);
const programComposite = createProgram(gl, GLOW_VS, GLOW_COMPOSITE_FS);
const vao = gl.createVertexArray();
if (!vao) {
throw new Error('Failed to create WebGL vertex array');
}
gl.bindVertexArray(vao);
const data = new Float32Array([
-1, -1, 0, 0, 1, -1, 1, 0, -1, 1, 0, 1, 1, 1, 1, 1,
]);
const vbo = gl.createBuffer();
if (!vbo) {
throw new Error('Failed to create WebGL buffer');
}
gl.bindBuffer(gl.ARRAY_BUFFER, vbo);
gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW);
gl.enableVertexAttribArray(0);
gl.vertexAttribPointer(0, 2, gl.FLOAT, false, 16, 0);
gl.enableVertexAttribArray(1);
gl.vertexAttribPointer(1, 2, gl.FLOAT, false, 16, 8);
gl.bindVertexArray(null);
const textureSource = createRgbaTexture(gl);
const textureGlowA = createRgbaTexture(gl);
const textureGlowB = createRgbaTexture(gl);
const framebuffer = gl.createFramebuffer();
if (!framebuffer) {View on GitHub (pinned to 78fe4bb3fd)
Solutions
- Reduce concurrent WebGL effects.
- 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|buffer/i.test(String(err))) throw err;
await new Promise((r) => setTimeout(r, 200 * (attempt + 1)));
}
} Prevention
- Reduce concurrent WebGL effects to free VBO objects.
- Render on a host with adequate GPU resources.
- Retry after a fresh Chrome launch.
When it happens
Trigger: Lost context between VAO and VBO creation; buffer-object pool exhausted by many effects.
Common situations: Many WebGL layers; headless Chrome close to GPU object limits.
Related errors
- Failed to create WebGL vertex array
- Failed to create WebGL geometry
- Failed to create WebGL shader
- Failed to create WebGL program
- Failed to create WebGL texture
AI-assisted analysis of remotion-dev/remotion@78fe4bb3fd (2026-08-12).
Data as JSON: /api/errors/5a56efb074535ff8.
Report an issue: GitHub.