Report #3158
[bug\_fix] runtime error: invalid memory address or nil pointer dereference
Add a nil guard at the top of methods with pointer receivers, and ensure callers initialize the pointer before use. When returning pointers as errors or optional objects, return the literal nil instead of a typed nil pointer.
Journey Context:
My service panicked in production on the line "s.cache.Put\(key, val\)" with "invalid memory address or nil pointer dereference". The stack trace pointed to a method on \*CacheStore, but the struct that held it was declared as var svc Service and never initialized. Because the receiver was a nil pointer, the method call itself was valid Go syntax, but the first field access inside the method dereferenced nil. I initially added the guard inside the method: if s == nil \{ return errors.New\("cache not initialized"\) \}. That stopped the panic. Later I also added a constructor that returns a fully populated Service so callers cannot create a zero-value Service and accidentally use a nil store. The fix works because Go lets you call a method on a nil pointer, but any access through that receiver panics unless you explicitly handle it.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T15:36:44.401640+00:00— report_created — created