tailscale/tailscale · error

Unknown profile

Error message

Unknown profile

What it means

HTTP 404 from the c2n pprof handler when pprof.Lookup returns nil for the requested profile name. No registered Go pprof profile matches the name given in the URL path (valid names include heap, goroutine, profile, etc.).

Source

Thrown at ipn/ipnlocal/c2n_pprof.go:29

	"runtime"
	"runtime/pprof"
	"strconv"
)

func init() {
	c2nLogHeap = func(w http.ResponseWriter, r *http.Request) {
		// Support same optional gc parameter as net/http/pprof:
		if gc, _ := strconv.Atoi(r.FormValue("gc")); gc > 0 {
			runtime.GC()
		}
		pprof.WriteHeapProfile(w)
	}

	c2nPprof = func(w http.ResponseWriter, r *http.Request, profile string) {
		w.Header().Set("X-Content-Type-Options", "nosniff")
		p := pprof.Lookup(string(profile))
		if p == nil {
			http.Error(w, "Unknown profile", http.StatusNotFound)
			return
		}
		gc, _ := strconv.Atoi(r.FormValue("gc"))
		if profile == "heap" && gc > 0 {
			runtime.GC()
		}
		debug, _ := strconv.Atoi(r.FormValue("debug"))
		if debug != 0 {
			w.Header().Set("Content-Type", "text/plain; charset=utf-8")
		} else {
			w.Header().Set("Content-Type", "application/octet-stream")
			w.Header().Set("Content-Disposition", fmt.Sprintf(`attachment; filename="%s"`, profile))
		}
		p.WriteTo(w, debug)
	}
}

View on GitHub (pinned to 6e0912f979)

Solutions

  1. Request a valid pprof profile name such as heap, goroutine, or allocs.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at ipn/ipnlocal/c2n_pprof.go:29 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of tailscale/tailscale@6e0912f979 (2026-08-18). Data as JSON: /api/errors/72c27ed298eca074. Report an issue: GitHub.