gotify/server · error
missing NewGotifyPluginInstance symbol
Error message
missing NewGotifyPluginInstance symbol
What it means
Wrap() in plugin/compat/wrap.go fails when the plugin exports GetGotifyPluginInfo but not the required NewGotifyPluginInstance symbol. The second Lookup in the v1 branch returns an error, so the plugin has partial/incorrect API conformance: it provides plugin metadata but no instance constructor.
Source
Thrown at plugin/compat/wrap.go:24
"plugin"
papiv1 "github.com/gotify/plugin-api"
)
// Wrap wraps around a raw go plugin to provide typesafe access.
func Wrap(p *plugin.Plugin) (Plugin, error) {
getInfoHandle, err := p.Lookup("GetGotifyPluginInfo")
if err != nil {
return nil, errors.New("missing GetGotifyPluginInfo symbol")
}
switch getInfoHandle := getInfoHandle.(type) {
case func() papiv1.Info:
v1 := PluginV1{}
v1.Info = getInfoHandle()
newInstanceHandle, err := p.Lookup("NewGotifyPluginInstance")
if err != nil {
return nil, errors.New("missing NewGotifyPluginInstance symbol")
}
constructor, ok := newInstanceHandle.(func(ctx papiv1.UserContext) papiv1.Plugin)
if !ok {
return nil, fmt.Errorf("NewGotifyPluginInstance signature mismatch, func(ctx plugin.UserContext) plugin.Plugin expected, got %T", newInstanceHandle)
}
v1.Constructor = constructor
return v1, nil
default:
return nil, fmt.Errorf("unknown plugin version (unrecogninzed GetGotifyPluginInfo signature %T)", getInfoHandle)
}
}
View on GitHub (pinned to 14bfc25627)
Solutions
- Add the required exported constructor func NewGotifyPluginInstance(ctx context.Context) (papiv1.Plugin) to the plugin's main package
- Rebuild the .so with the same Go version and platform as the host server
- Check the plugin against the plugin-api v1 contract to ensure all required symbols are exported
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at plugin/compat/wrap.go:24 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of gotify/server@14bfc25627 (2026-09-05).
Data as JSON: /api/errors/d6b226ec022ed55b.
Report an issue: GitHub.