{"record":{"id":"4666cac5f00a32b4","repo":"zed-industries/zed","slug":"failed-to-get-agsinitialize-address","errorCode":null,"errorMessage":"Failed to get agsInitialize address","messagePattern":"Failed to get agsInitialize address","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/gpui_windows/src/directx_renderer.rs","lineNumber":1909,"sourceCode":"        version: c_int,\n        config: *const c_void,\n        context: *mut *mut AGSContext,\n        gpu_info: *mut AGSGPUInfo,\n    ) -> c_int;\n\n    // https://github.com/GPUOpen-LibrariesAndSDKs/AGS_SDK/blob/5d8812d703d0335741b6f7ffc37838eeb8b967f7/ags_lib/inc/amd_ags.h#L436\n    #[allow(non_camel_case_types)]\n    type agsDeInitialize_t = unsafe extern \"C\" fn(context: *mut AGSContext) -> c_int;\n\n    pub(super) fn get_driver_version() -> Result<String> {\n        #[cfg(target_pointer_width = \"64\")]\n        let amd_dll_name = s!(\"amd_ags_x64.dll\");\n        #[cfg(target_pointer_width = \"32\")]\n        let amd_dll_name = s!(\"amd_ags_x86.dll\");\n\n        with_dll_library(amd_dll_name, |amd_dll| unsafe {\n            let ags_initialize_addr = GetProcAddress(amd_dll, s!(\"agsInitialize\"))\n                .ok_or_else(|| anyhow::anyhow!(\"Failed to get agsInitialize address\"))?;\n            let ags_deinitialize_addr = GetProcAddress(amd_dll, s!(\"agsDeInitialize\"))\n                .ok_or_else(|| anyhow::anyhow!(\"Failed to get agsDeInitialize address\"))?;\n\n            let ags_initialize: agsInitialize_t = std::mem::transmute(ags_initialize_addr);\n            let ags_deinitialize: agsDeInitialize_t = std::mem::transmute(ags_deinitialize_addr);\n\n            let mut context: *mut AGSContext = std::ptr::null_mut();\n            let mut gpu_info: AGSGPUInfo = AGSGPUInfo {\n                driver_version: std::ptr::null(),\n                radeon_software_version: std::ptr::null(),\n                num_devices: 0,\n                devices: std::ptr::null_mut(),\n            };\n\n            let result = ags_initialize(\n                AGS_CURRENT_VERSION,\n                std::ptr::null(),\n                &mut context,","sourceCodeStart":1891,"sourceCodeEnd":1927,"githubUrl":"https://github.com/zed-industries/zed/blob/f4178619acd0d47ea1f76a2025c42962c6d6638c/crates/gpui_windows/src/directx_renderer.rs#L1891-L1927","documentation":"Raised in `get_driver_version` when GetProcAddress for `agsInitialize` on amd_ags_x64.dll (or x86) returns null: the AMD AGS DLL was found/loaded but does not export the expected symbol, usually meaning an incompatible or truncated amd_ags DLL version is on the path. Only affects reporting AMD driver versions.","triggerScenarios":"Thrown at crates/gpui_windows/src/directx_renderer.rs:1909 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Treat as non-fatal: return an unknown/empty driver version string instead of failing rendering.","Verify the bundled amd_ags_x64.dll version matches the AGS SDK headers used.","Check the DLL architecture matches the process (x64 vs x86).","Log the DLL path to detect a conflicting copy being loaded from PATH."],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"f4178619acd0d47ea1f76a2025c42962c6d6638c","analyzedAt":"2026-08-20T19:29:52.058Z","contentChangedAt":"2026-08-20T19:29:52.058Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}