{"record":{"id":"6143ab9ca185dbd6","repo":"remotion-dev/remotion","slug":"glow-program-link-failed-log-no-log","errorCode":null,"errorMessage":"Glow program link failed: ${log ?? '(no log)'}","messagePattern":"Glow program link failed: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"critical","filePath":"packages/effects/src/glow/glow-runtime.ts","lineNumber":87,"sourceCode":"};\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);\n\tif (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n\t\tconst log = gl.getProgramInfoLog(program);\n\t\tgl.deleteProgram(program);\n\t\tthrow new Error(`Glow program link failed: ${log ?? '(no log)'}`);\n\t}\n\n\treturn program;\n};\n\nconst createProgram = (\n\tgl: WebGL2RenderingContext,\n\tvertexSource: string,\n\tfragmentSource: string,\n): WebGLProgram => {\n\tconst vs = compileShader(gl, gl.VERTEX_SHADER, vertexSource);\n\tconst fs = compileShader(gl, gl.FRAGMENT_SHADER, fragmentSource);\n\tconst program = linkProgram(gl, vs, fs);\n\tgl.deleteShader(vs);\n\tgl.deleteShader(fs);\n\treturn program;\n};\n","sourceCodeStart":69,"sourceCodeEnd":105,"githubUrl":"https://github.com/remotion-dev/remotion/blob/78fe4bb3fdb5a2cd68724393d63cb223db333fa7/packages/effects/src/glow/glow-runtime.ts#L69-L105","documentation":"Thrown when gl.linkProgram fails for a glow program, with the GPU info log appended. Means the compiled vertex/fragment pair are individually valid but incompatible (varying in/out mismatch, undeclared uniforms, qualifier conflict), pointing at a bug in the shipped glow shader pair.","triggerScenarios":"Editing GLOW_VS or a GLOW_*_FS and forgetting to mirror an in/out declaration; tampered shader source; driver rejecting a qualifier at link time.","commonSituations":"Local shader development; partial GLSL ES 300 driver support.","solutions":["Inspect the appended info log for the mismatched symbol.","Restore the shipped shader sources from a clean checkout.","File a Remotion bug with the log and environment details."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n  effect = glow(params);\n} catch (err) {\n  if (/program link failed/i.test(String(err))) {\n    console.error('Glow link failure; info log:', String(err));\n  }\n  throw err;\n}","preventionTips":["If you modify glow shaders, keep vertex/fragment in/out declarations and uniforms matched.","Restore shaders from a clean checkout if link errors appear after edits.","Report persistent link failures with the info log and environment details."],"tags":["webgl","glow","shader","link","glsl"],"backgroundTag":null,"analyzedSha":"78fe4bb3fdb5a2cd68724393d63cb223db333fa7","analyzedAt":"2026-08-12T17:18:50.444Z","schemaVersion":2},"datasetVersion":"2026-08-12T18:17:37.767Z"}