Skip to content

bug: panic'd due to nil ptr deref #449

Description

@gman0

Describe the bug

konnector panics with nil ptr deref.

Steps To Reproduce

  • Run with namespaced isolation, namespaced informers
  • Bind cowboys
  • Create objects in consumer
  • Delete BoundCluster's namespace in provider

Expected Behaviour

Don't panic.

Component

konnector

kubectl version

No response

Kubernetes version

No response

kube-bind version

No response

Additional Context

Stack trace:

I0128 12:38:50.057551  594832 namespacelifecycle_controller.go:237] "handling deletion of APIServiceNamespace" key="cowboys" controller="kube-bind-konnector-cluster" accessSecretKey="kube-bind/kubeconfig-6pk98" key="kube-bind-g2iacpqng0m1/wild-west" APIServiceNamespace="kube-bind-g2iacpqng0m1/wild-west"
I0128 12:38:50.057565  594832 namespacelifecycle_controller.go:248] "not deleting Namespace as we can't be sure who owns it" key="cowboys" controller="kube-bind-konnector-cluster" accessSecretKey="kube-bind/kubeconfig-6pk98" key="kube-bind-g2iacpqng0m1/wild-west" APIServiceNamespace="kube-bind-g2iacpqng0m1/wild-west"
E0128 12:38:50.057651  594832 panic.go:262] "Observed a panic" panic="runtime error: invalid memory address or nil pointer dereference" panicGoValue="\"invalid memory address or nil pointer dereference\"" stacktrace=<
	goroutine 372 [running]:
	k8s.io/apimachinery/pkg/util/runtime.logPanic({0x2e1bfd8, 0xc000b449f0}, {0x256eee0, 0x468c730})
		/home/rvasek/go/pkg/mod/k8s.io/apimachinery@v0.34.2/pkg/util/runtime/runtime.go:132 +0xbc
	k8s.io/apimachinery/pkg/util/runtime.handleCrash({0x2e1bfd8, 0xc000b449c0}, {0x256eee0, 0x468c730}, {0x0, 0x0, 0xa2?})
		/home/rvasek/go/pkg/mod/k8s.io/apimachinery@v0.34.2/pkg/util/runtime/runtime.go:107 +0x116
	k8s.io/apimachinery/pkg/util/runtime.HandleCrashWithLogger({{0x2e25768?, 0xc0003e7100?}, 0xc000dcea20?}, {0x0, 0x0, 0x0})
		/home/rvasek/go/pkg/mod/k8s.io/apimachinery@v0.34.2/pkg/util/runtime/runtime.go:91 +0x115
	panic({0x256eee0?, 0x468c730?})
		/usr/lib/golang/src/runtime/panic.go:783 +0x132
	github.com/kube-bind/kube-bind/pkg/konnector/controllers/cluster/serviceexport/multinsinformer.(*DynamicMultiNamespaceInformer).enqueueServiceNamespace(0xc00043f360, {0x298fba0, 0xc000c2a000})
		/home/rvasek/ws/kube-bind/pkg/konnector/controllers/cluster/serviceexport/multinsinformer/informer.go:170 +0x5cd
	github.com/kube-bind/kube-bind/pkg/konnector/controllers/cluster/serviceexport/multinsinformer.(*DynamicMultiNamespaceInformer).Start.func3({0x298fba0?, 0xc000c2a000?})
		/home/rvasek/ws/kube-bind/pkg/konnector/controllers/cluster/serviceexport/multinsinformer/informer.go:119 +0x2a
	k8s.io/client-go/tools/cache.ResourceEventHandlerFuncs.OnDelete(...)
		/home/rvasek/go/pkg/mod/k8s.io/client-go@v0.34.2/tools/cache/controller.go:273
	github.com/kube-bind/kube-bind/pkg/konnector/controllers/dynamic.NewDynamicInformer[...].func3()
		/home/rvasek/ws/kube-bind/pkg/konnector/controllers/dynamic/eventhandler.go:93 +0xef
	k8s.io/client-go/tools/cache.ResourceEventHandlerFuncs.OnDelete(...)
		/home/rvasek/go/pkg/mod/k8s.io/client-go@v0.34.2/tools/cache/controller.go:273
	k8s.io/client-go/tools/cache.(*processorListener).run.func1(0xc000dcef5f, 0xc000cdf220, {0x26250e0?, 0xc00110c250?})
		/home/rvasek/go/pkg/mod/k8s.io/client-go@v0.34.2/tools/cache/shared_informer.go:1081 +0x17d
	k8s.io/client-go/tools/cache.(*processorListener).run(0xc000cdf220)
		/home/rvasek/go/pkg/mod/k8s.io/client-go@v0.34.2/tools/cache/shared_informer.go:1086 +0x3c
	k8s.io/apimachinery/pkg/util/wait.(*Group).Start.func1()
		/home/rvasek/go/pkg/mod/k8s.io/apimachinery@v0.34.2/pkg/util/wait/wait.go:72 +0x4c
	created by k8s.io/apimachinery/pkg/util/wait.(*Group).Start in goroutine 354
		/home/rvasek/go/pkg/mod/k8s.io/apimachinery@v0.34.2/pkg/util/wait/wait.go:70 +0x73
 >
panic: runtime error: invalid memory address or nil pointer dereference [recovered, repanicked]

The segfault is a bit time-dependent and is not triggered each time.

https://github.com/kube-bind/kube-bind/blob/efaa16f625c2f392ab6611e04449ecb419ddbdc8/pkg/konnector/controllers/cluster/serviceexport/multinsinformer/informer.go#L160-L176

On L170, sns may be nil.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions