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

  1. Add the required exported constructor func NewGotifyPluginInstance(ctx context.Context) (papiv1.Plugin) to the plugin's main package
  2. Rebuild the .so with the same Go version and platform as the host server
  3. 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.