{"record":{"id":"2c3ed4739da4a446","repo":"go-delve/delve","slug":"type-not-supported-by-ebpf","errorCode":null,"errorMessage":"type not supported by ebpf","messagePattern":"type not supported by ebpf","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"pkg/proc/target.go","lineNumber":513,"sourceCode":"\tvar results []*UProbeTraceResult\n\ttracepoints := t.proc.GetBufferedTracepoints()\n\tconvertInputParamToVariable := func(ip *ebpf.RawUProbeParam) *Variable {\n\t\tv := &Variable{}\n\t\tv.Name = ip.Name\n\t\tv.RealType = ip.RealType\n\t\tv.DwarfType = ip.RealType // needed so ConstDescr doesn't panic when bi is set\n\t\tv.Len = ip.Len\n\t\tv.Base = ip.Base\n\t\tv.Addr = ip.Addr\n\t\tv.Kind = ip.Kind\n\t\tv.bi = t.BinInfo()\n\n\t\tif ip.Unreadable != nil {\n\t\t\tv.Unreadable = ip.Unreadable\n\t\t\treturn v\n\t\t}\n\t\tif v.RealType == nil {\n\t\t\tv.Unreadable = errors.New(\"type not supported by ebpf\")\n\t\t\treturn v\n\t\t}\n\n\t\tcachedMem := CreateLoadedCachedMemory(ip.Data)\n\t\tcompMem, compErr := CreateCompositeMemory(cachedMem, t.BinInfo().Arch, op.DwarfRegisters{}, ip.Pieces, ip.RealType.Common().ByteSize)\n\t\tif compErr != nil {\n\t\t\tv.Unreadable = fmt.Errorf(\"ebpf composite memory: %w\", compErr)\n\t\t\treturn v\n\t\t}\n\t\tv.mem = compMem\n\n\t\tv.loadValue(cfg)\n\n\t\treturn v\n\t}\n\tfor _, tp := range tracepoints {\n\t\tr := &UProbeTraceResult{}\n\t\tr.FnAddr = tp.FnAddr","sourceCodeStart":495,"sourceCodeEnd":531,"githubUrl":"https://github.com/go-delve/delve/blob/a23773e6c31361e43246bc43a424ee009679b174/pkg/proc/target.go#L495-L531","documentation":"This inline error is raised in the eBPF tracepoint argument loading path (pkg/proc/target.go) when a captured uprobe argument has no RealType that the eBPF backend can reconstruct, i.e. the argument's DWARF type is not one of the types supported by the eBPF tracer (map, chan, interface, func, struct, array, etc.). The captured raw bytes exist but delve cannot build a Variable from them. The variable is returned with Unreadable set to this error.","triggerScenarios":"Evaluating a buffered tracepoint (GetBufferedTracepoints -> loadValue) whose function argument has a type the eBPF pipeline cannot decode, or where the UProbeArgMap kind lookup fails so v.RealType stays nil.","commonSituations":"Tracing a function that takes interface, channel, map, func, struct or array parameters with 'dlv trace --ebpf'; tracing generic/instantiated functions whose DWARF types the reflect-kind mapping does not cover.","solutions":["Trace only arguments of supported types (int/uint/bool/float/complex/string/pointer/slice)","Wrap unsupported arguments: pass &arg (pointer) or log supported fields instead","Extend dt.Common().ReflectKind mapping / parseFunctionParameterList if you maintain delve","Fall back to regular breakpoints (dlv trace without --ebpf) for full type support"],"exampleFix":"// before\ndlv trace --ebpf pkg.Func   // arg is chan: 'type not supported by ebpf'\n// after\nfunc Func(ch chan int) { /* keep */ }\nfunc FuncTraced(n int, ch chan int) { _ = ch; dlvHook(n) } // trace scalar arg only","handlingStrategy":"fallback","validationCode":"// pre-check argument types of traced function against supported set\nfor _, a := range fnArgs {\n    if !ebpfSupportedKind(a.Common().ReflectKind) { skipOrFallback(a) }\n}","typeGuard":"func ebpfSupported(k reflect.Kind) bool {\n    switch k {\n    case reflect.Int, reflect.Uint, reflect.Bool, reflect.Float64,\n        reflect.Float32, reflect.Complex128, reflect.String, reflect.Ptr, reflect.Slice:\n        return true\n    }\n    return false\n}","tryCatchPattern":"if v.Unreadable != nil && strings.Contains(v.Unreadable.Error(), \"type not supported by ebpf\") {\n    // fall back to breakpoint-based tracing for this arg\n}","preventionTips":["Trace only scalar/string/pointer/slice args with --ebpf","Check delve docs for the supported type list before tracing","Fall back to non-eBPF tracing for structs, maps, chans, interfaces"],"tags":["go","ebpf","tracepoint","types"],"backgroundTag":"ebpf-unsupported-type","analyzedSha":"a23773e6c31361e43246bc43a424ee009679b174","analyzedAt":"2026-08-31T15:12:45.221Z","schemaVersion":2},"datasetVersion":"2026-08-31T22:30:34.772Z"}