{"record":{"id":"dd9b74d11eb07895","repo":"router-for-me/CLIProxyAPI","slug":"missing-cliproxy-plugin-init-s","errorCode":null,"errorMessage":"missing cliproxy_plugin_init: %s","messagePattern":"missing cliproxy_plugin_init: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/pluginhost/loader_unix.go","lineNumber":125,"sourceCode":"func defaultPluginLoader() pluginLoader {\n\treturn dynamicLibraryLoader{}\n}\n\nfunc (dynamicLibraryLoader) Open(file pluginFile, host *Host) (pluginClient, error) {\n\tcPath := C.CString(file.Path)\n\tdefer C.free(unsafe.Pointer(cPath))\n\n\thandle := C.cliproxy_dlopen(cPath)\n\tif handle == nil {\n\t\treturn nil, fmt.Errorf(\"dlopen %s: %s\", file.Path, dlerrorString())\n\t}\n\n\tcSymbol := C.CString(\"cliproxy_plugin_init\")\n\tinitSymbol := C.cliproxy_dlsym(handle, cSymbol)\n\tC.free(unsafe.Pointer(cSymbol))\n\tif initSymbol == nil {\n\t\tC.cliproxy_dlclose(handle)\n\t\treturn nil, fmt.Errorf(\"missing cliproxy_plugin_init: %s\", dlerrorString())\n\t}\n\n\thostAPI := (*C.cliproxy_host_api)(C.malloc(C.size_t(unsafe.Sizeof(C.cliproxy_host_api{}))))\n\tif hostAPI == nil {\n\t\tC.cliproxy_dlclose(handle)\n\t\treturn nil, fmt.Errorf(\"allocate host api\")\n\t}\n\thostCtx := C.malloc(C.size_t(unsafe.Sizeof(C.uintptr_t(0))))\n\tif hostCtx == nil {\n\t\tC.free(unsafe.Pointer(hostAPI))\n\t\tC.cliproxy_dlclose(handle)\n\t\treturn nil, fmt.Errorf(\"allocate host context\")\n\t}\n\tid := hostCallbackID.Add(1)\n\t*(*C.uintptr_t)(hostCtx) = C.uintptr_t(id)\n\thostCallbackEntries.Store(id, dynamicHostCallbackEntry{host: host, pluginID: file.ID})\n\tC.cliproxy_set_host_api(hostAPI, C.uint32_t(pluginHostABIVersion), hostCtx)\n","sourceCodeStart":107,"sourceCodeEnd":143,"githubUrl":"https://github.com/router-for-me/CLIProxyAPI/blob/78f0c4079e3e6273d65d03b5549cffc898703264/internal/pluginhost/loader_unix.go#L107-L143","documentation":"Error \"missing cliproxy_plugin_init: %s\" thrown in router-for-me/CLIProxyAPI.","triggerScenarios":"Thrown at internal/pluginhost/loader_unix.go:125 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Rebuild the plugin exporting the cliproxy_plugin_init symbol.","Verify the plugin was compiled against the correct plugin SDK."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"78f0c4079e3e6273d65d03b5549cffc898703264","analyzedAt":"2026-08-15T12:26:37.444Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}