Report #104423
[bug\_fix] nil pointer dereference when accessing \*http.Client or \*sql.DB after initialization
Ensure that the pointer to the struct is properly initialized before use. For example, if using a factory function, verify it returns a non-nil pointer and check for errors. A common pattern is to use \`var client \*http.Client = &http.Client\{\}\` or initialize via \`http.DefaultClient\`.
Journey Context:
A developer was building a microservice that made outbound HTTP calls. They defined a global variable \`var httpClient \*http.Client\` and then in an init function, they conditionally set it: \`if config.UseCustom \{ httpClient = &http.Client\{Timeout: 10 \* time.Second\} \}\`. In the default case, they left it nil, expecting to use \`http.DefaultClient\` elsewhere. However, a code path in a handler directly called \`httpClient.Get\(...\)\` without a nil check. The service ran fine in staging where the custom config was set, but in production the config was missing, leading to a nil pointer panic. The developer spent hours debugging because the panic only happened under specific configuration. The fix was to either always initialize the pointer \(e.g., \`httpClient = &http.Client\{\}\`\) or to use a helper function that falls back to \`http.DefaultClient\` when the pointer is nil. This is a classic Go nil pointer issue stemming from incomplete initialization paths.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-08-16T20:05:52.411777+00:00— report_created — created