diff --git a/support/ebpf/tracer.ebpf.amd64 b/support/ebpf/tracer.ebpf.amd64 index 144752002..b2613df11 100644 Binary files a/support/ebpf/tracer.ebpf.amd64 and b/support/ebpf/tracer.ebpf.amd64 differ diff --git a/support/ebpf/tracer.ebpf.arm64 b/support/ebpf/tracer.ebpf.arm64 index 8b08a6b8a..5c6a6d7f8 100644 Binary files a/support/ebpf/tracer.ebpf.arm64 and b/support/ebpf/tracer.ebpf.arm64 differ diff --git a/support/ebpf/types.h b/support/ebpf/types.h index 3317ff17d..668136f06 100644 --- a/support/ebpf/types.h +++ b/support/ebpf/types.h @@ -350,7 +350,9 @@ typedef enum TraceOrigin { // MAX_FRAME_UNWINDS defines the maximum number of frames per // Trace we can unwind and respect the limit of eBPF instructions, // limit of tail calls and limit of stack size per eBPF program. -#define MAX_FRAME_UNWINDS 128 +// 1024 is the maximum power of 2 we can fit in a single perf event, and +// in a single per CPU array entry +#define MAX_FRAME_UNWINDS 1024 // MAX_NON_ERROR_FRAME_UNWINDS defines the maximum number of frames // to be pushed by unwinders while still leaving space for an error frame. diff --git a/support/types.go b/support/types.go index 7541b5b89..058910cde 100644 --- a/support/types.go +++ b/support/types.go @@ -50,7 +50,7 @@ const ( EventTypeGenericPID = 0x1 ) -const MaxFrameUnwinds = 0x80 +const MaxFrameUnwinds = 0x400 const UnwindInfoMaxEntries = 0x4000 @@ -165,7 +165,7 @@ type Trace struct { Stack_len uint32 Origin uint32 Offtime uint64 - Frames [128]Frame + Frames [1024]Frame } type UnwindInfo struct { Opcode uint8 @@ -311,7 +311,7 @@ type V8ProcInfo struct { const ( Sizeof_Frame = 0x18 Sizeof_StackDelta = 0x4 - Sizeof_Trace = 0xed0 + Sizeof_Trace = 0x62d0 sizeof_ApmIntProcInfo = 0x8 sizeof_DotnetProcInfo = 0x4