diff --git a/bpf/go_common.h b/bpf/go_common.h index fb29a91a9..2b7a2a159 100644 --- a/bpf/go_common.h +++ b/bpf/go_common.h @@ -33,7 +33,7 @@ char __license[] SEC("license") = "Dual MIT/GPL"; // attributes (method, path, and status code). typedef struct goroutine_key { - u32 pid; // PID of the process + u64 pid; // PID of the process u64 addr; // Address of the goroutine } goroutine_key_t; @@ -87,7 +87,6 @@ static __always_inline u64 find_parent_goroutine(goroutine_key_t *current) { } u64 r_addr = current->addr; - goroutine_key_t *parent = current; int attempts = 0; do { @@ -95,11 +94,10 @@ static __always_inline u64 find_parent_goroutine(goroutine_key_t *current) { if (!p_inv) { // not this goroutine running the server request processing // Let's find the parent scope goroutine_metadata *g_metadata = - (goroutine_metadata *)bpf_map_lookup_elem(&ongoing_goroutines, parent); + (goroutine_metadata *)bpf_map_lookup_elem(&ongoing_goroutines, current); if (g_metadata) { // Lookup now to see if the parent was a request r_addr = (u64)g_metadata->parent.addr; - parent = &g_metadata->parent; } else { break; } diff --git a/bpf/go_runtime.h b/bpf/go_runtime.h index 41ebc9746..cfd241236 100644 --- a/bpf/go_runtime.h +++ b/bpf/go_runtime.h @@ -66,11 +66,10 @@ int uprobe_proc_newproc1_ret(struct pt_regs *ctx) { u32 pid = pid_from_pid_tgid(pid_tid); goroutine_key_t g_key = {.addr = (u64)goroutine_addr, .pid = pid}; - goroutine_key_t p_key = {.addr = (u64)parent_goroutine, .pid = pid}; goroutine_metadata metadata = { .timestamp = bpf_ktime_get_ns(), - .parent = p_key, + .parent = {.addr = (u64)parent_goroutine, .pid = pid}, }; if (bpf_map_update_elem(&ongoing_goroutines, &g_key, &metadata, BPF_ANY)) { diff --git a/pkg/internal/ebpf/gotracer/bpf_arm64_bpfel.go b/pkg/internal/ebpf/gotracer/bpf_arm64_bpfel.go index 3aa6167b1..6f6d0982f 100644 --- a/pkg/internal/ebpf/gotracer/bpf_arm64_bpfel.go +++ b/pkg/internal/ebpf/gotracer/bpf_arm64_bpfel.go @@ -20,8 +20,7 @@ type bpfConnectionInfoT struct { } type bpfGoroutineKeyT struct { - Pid uint32 - _ [4]byte + Pid uint64 Addr uint64 } diff --git a/pkg/internal/ebpf/gotracer/bpf_arm64_bpfel.o b/pkg/internal/ebpf/gotracer/bpf_arm64_bpfel.o index f22767630..06d682206 100644 Binary files a/pkg/internal/ebpf/gotracer/bpf_arm64_bpfel.o and b/pkg/internal/ebpf/gotracer/bpf_arm64_bpfel.o differ diff --git a/pkg/internal/ebpf/gotracer/bpf_debug_arm64_bpfel.go b/pkg/internal/ebpf/gotracer/bpf_debug_arm64_bpfel.go index 4bea7b20e..ca9b232dd 100644 --- a/pkg/internal/ebpf/gotracer/bpf_debug_arm64_bpfel.go +++ b/pkg/internal/ebpf/gotracer/bpf_debug_arm64_bpfel.go @@ -20,8 +20,7 @@ type bpf_debugConnectionInfoT struct { } type bpf_debugGoroutineKeyT struct { - Pid uint32 - _ [4]byte + Pid uint64 Addr uint64 } diff --git a/pkg/internal/ebpf/gotracer/bpf_debug_arm64_bpfel.o b/pkg/internal/ebpf/gotracer/bpf_debug_arm64_bpfel.o index 627a6f673..00fd5908b 100644 Binary files a/pkg/internal/ebpf/gotracer/bpf_debug_arm64_bpfel.o and b/pkg/internal/ebpf/gotracer/bpf_debug_arm64_bpfel.o differ diff --git a/pkg/internal/ebpf/gotracer/bpf_debug_x86_bpfel.go b/pkg/internal/ebpf/gotracer/bpf_debug_x86_bpfel.go index 6ba11ecca..603dce16c 100644 --- a/pkg/internal/ebpf/gotracer/bpf_debug_x86_bpfel.go +++ b/pkg/internal/ebpf/gotracer/bpf_debug_x86_bpfel.go @@ -20,8 +20,7 @@ type bpf_debugConnectionInfoT struct { } type bpf_debugGoroutineKeyT struct { - Pid uint32 - _ [4]byte + Pid uint64 Addr uint64 } diff --git a/pkg/internal/ebpf/gotracer/bpf_debug_x86_bpfel.o b/pkg/internal/ebpf/gotracer/bpf_debug_x86_bpfel.o index 4c966261c..0bca581f9 100644 Binary files a/pkg/internal/ebpf/gotracer/bpf_debug_x86_bpfel.o and b/pkg/internal/ebpf/gotracer/bpf_debug_x86_bpfel.o differ diff --git a/pkg/internal/ebpf/gotracer/bpf_tp_arm64_bpfel.go b/pkg/internal/ebpf/gotracer/bpf_tp_arm64_bpfel.go index 0520e2d8e..b6d166211 100644 --- a/pkg/internal/ebpf/gotracer/bpf_tp_arm64_bpfel.go +++ b/pkg/internal/ebpf/gotracer/bpf_tp_arm64_bpfel.go @@ -26,8 +26,7 @@ type bpf_tpFramerFuncInvocationT struct { } type bpf_tpGoroutineKeyT struct { - Pid uint32 - _ [4]byte + Pid uint64 Addr uint64 } diff --git a/pkg/internal/ebpf/gotracer/bpf_tp_arm64_bpfel.o b/pkg/internal/ebpf/gotracer/bpf_tp_arm64_bpfel.o index 59688ccbb..2a0cd9123 100644 Binary files a/pkg/internal/ebpf/gotracer/bpf_tp_arm64_bpfel.o and b/pkg/internal/ebpf/gotracer/bpf_tp_arm64_bpfel.o differ diff --git a/pkg/internal/ebpf/gotracer/bpf_tp_debug_arm64_bpfel.go b/pkg/internal/ebpf/gotracer/bpf_tp_debug_arm64_bpfel.go index 99f67c09d..a4d6bd986 100644 --- a/pkg/internal/ebpf/gotracer/bpf_tp_debug_arm64_bpfel.go +++ b/pkg/internal/ebpf/gotracer/bpf_tp_debug_arm64_bpfel.go @@ -26,8 +26,7 @@ type bpf_tp_debugFramerFuncInvocationT struct { } type bpf_tp_debugGoroutineKeyT struct { - Pid uint32 - _ [4]byte + Pid uint64 Addr uint64 } diff --git a/pkg/internal/ebpf/gotracer/bpf_tp_debug_arm64_bpfel.o b/pkg/internal/ebpf/gotracer/bpf_tp_debug_arm64_bpfel.o index 44722a1a4..62eafdcad 100644 Binary files a/pkg/internal/ebpf/gotracer/bpf_tp_debug_arm64_bpfel.o and b/pkg/internal/ebpf/gotracer/bpf_tp_debug_arm64_bpfel.o differ diff --git a/pkg/internal/ebpf/gotracer/bpf_tp_debug_x86_bpfel.go b/pkg/internal/ebpf/gotracer/bpf_tp_debug_x86_bpfel.go index 43675eec0..a97386482 100644 --- a/pkg/internal/ebpf/gotracer/bpf_tp_debug_x86_bpfel.go +++ b/pkg/internal/ebpf/gotracer/bpf_tp_debug_x86_bpfel.go @@ -26,8 +26,7 @@ type bpf_tp_debugFramerFuncInvocationT struct { } type bpf_tp_debugGoroutineKeyT struct { - Pid uint32 - _ [4]byte + Pid uint64 Addr uint64 } diff --git a/pkg/internal/ebpf/gotracer/bpf_tp_debug_x86_bpfel.o b/pkg/internal/ebpf/gotracer/bpf_tp_debug_x86_bpfel.o index 05ac2eb7a..6f2d1e913 100644 Binary files a/pkg/internal/ebpf/gotracer/bpf_tp_debug_x86_bpfel.o and b/pkg/internal/ebpf/gotracer/bpf_tp_debug_x86_bpfel.o differ diff --git a/pkg/internal/ebpf/gotracer/bpf_tp_x86_bpfel.go b/pkg/internal/ebpf/gotracer/bpf_tp_x86_bpfel.go index 7bcf026bf..19544b597 100644 --- a/pkg/internal/ebpf/gotracer/bpf_tp_x86_bpfel.go +++ b/pkg/internal/ebpf/gotracer/bpf_tp_x86_bpfel.go @@ -26,8 +26,7 @@ type bpf_tpFramerFuncInvocationT struct { } type bpf_tpGoroutineKeyT struct { - Pid uint32 - _ [4]byte + Pid uint64 Addr uint64 } diff --git a/pkg/internal/ebpf/gotracer/bpf_tp_x86_bpfel.o b/pkg/internal/ebpf/gotracer/bpf_tp_x86_bpfel.o index d5f7e3f3e..b80c6ecc4 100644 Binary files a/pkg/internal/ebpf/gotracer/bpf_tp_x86_bpfel.o and b/pkg/internal/ebpf/gotracer/bpf_tp_x86_bpfel.o differ diff --git a/pkg/internal/ebpf/gotracer/bpf_x86_bpfel.go b/pkg/internal/ebpf/gotracer/bpf_x86_bpfel.go index 00785a08e..2ca52cc37 100644 --- a/pkg/internal/ebpf/gotracer/bpf_x86_bpfel.go +++ b/pkg/internal/ebpf/gotracer/bpf_x86_bpfel.go @@ -20,8 +20,7 @@ type bpfConnectionInfoT struct { } type bpfGoroutineKeyT struct { - Pid uint32 - _ [4]byte + Pid uint64 Addr uint64 } diff --git a/pkg/internal/ebpf/gotracer/bpf_x86_bpfel.o b/pkg/internal/ebpf/gotracer/bpf_x86_bpfel.o index 63441c8ee..8a82ca626 100644 Binary files a/pkg/internal/ebpf/gotracer/bpf_x86_bpfel.o and b/pkg/internal/ebpf/gotracer/bpf_x86_bpfel.o differ