{"record":{"id":"b5af221e97906856","repo":"remotion-dev/remotion","slug":"light-leak-shader-compile-failed-log-no-lo","errorCode":null,"errorMessage":"Light leak shader compile failed: ${log ?? '(no log)'}","messagePattern":"Light leak shader compile failed: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/effects/src/light-leak.ts","lineNumber":199,"sourceCode":"\tuResolution: WebGLUniformLocation | null;\n};\n\nconst compileShader = (\n\tgl: WebGL2RenderingContext,\n\ttype: number,\n\tsource: string,\n): WebGLShader => {\n\tconst shader = gl.createShader(type);\n\tif (!shader) {\n\t\tthrow new Error('Failed to create WebGL shader');\n\t}\n\n\tgl.shaderSource(shader, source);\n\tgl.compileShader(shader);\n\tif (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n\t\tconst log = gl.getShaderInfoLog(shader);\n\t\tgl.deleteShader(shader);\n\t\tthrow new Error(`Light leak shader compile failed: ${log ?? '(no log)'}`);\n\t}\n\n\treturn shader;\n};\n\nconst linkProgram = (\n\tgl: WebGL2RenderingContext,\n\tvs: WebGLShader,\n\tfs: WebGLShader,\n): WebGLProgram => {\n\tconst program = gl.createProgram();\n\tif (!program) {\n\t\tthrow new Error('Failed to create WebGL program');\n\t}\n\n\tgl.attachShader(program, vs);\n\tgl.attachShader(program, fs);\n\tgl.linkProgram(program);","sourceCodeStart":181,"sourceCodeEnd":217,"githubUrl":"https://github.com/remotion-dev/remotion/blob/78fe4bb3fdb5a2cd68724393d63cb223db333fa7/packages/effects/src/light-leak.ts#L181-L217","documentation":"Thrown by `compileShader()` in the light-leak effect when `gl.getShaderParameter(shader, gl.COMPILE_STATUS)` is false — the bundled GLSL (`LIGHT_LEAK_VS` / `LIGHT_LEAK_FS`) failed to compile, and the driver's info log is appended. Since the shaders are static and shipped with the package, a compile failure usually indicates a driver/GPU bug or a non-conformant WebGL2/GLSL ES 3.00 implementation.","triggerScenarios":"GPU driver with incomplete GLSL ES 3.00 support; swiftshader/llvmpipe rejecting an instruction; Chromium regression; virtual display without WebGL2 backing.","commonSituations":"CI on software rasterizers; older mobile drivers; Chromium downgrade; containers without a GPU device.","solutions":["Update GPU driver, Chromium, and Remotion to latest.","Switch the headless renderer to a GPU-backed Chrome or newer swiftshader.","Capture the appended `log` and report it with driver/Chrome versions to the Remotion tracker.","Temporarily remove the `lightLeak()` effect to unblock rendering."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n  lightLeak({...})(...);\n} catch (err) {\n  if (/Light leak shader compile failed/.test(String(err))) {\n    console.error('lightLeak() shader compile:', String(err));\n  } else {\n    throw err;\n  }\n}","preventionTips":["Pin a known-good Chromium/GPU combination for CI and Lambda.","Capture and report the appended info log — identical retries won't fix a driver bug.","Keep @remotion/effects updated for shader fixes."],"tags":["light-leak","webgl2","glsl","shader-compile","gpu-driver","render-env"],"backgroundTag":null,"analyzedSha":"78fe4bb3fdb5a2cd68724393d63cb223db333fa7","analyzedAt":"2026-08-12T17:18:50.444Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}