فهرست منبع

Feature #TASK_QT-18250 提交代码,解决bug

rock.wu 7 ماه پیش
والد
کامیت
4d46e42e7e
1فایلهای تغییر یافته به همراه17 افزوده شده و 15 حذف شده
  1. 17 15
      ebpftracer/ebpf/utrace/go/net/grpc.server.probe.bpf.c

+ 17 - 15
ebpftracer/ebpf/utrace/go/net/grpc.server.probe.bpf.c

@@ -33,15 +33,6 @@ struct grpc_header_ctx_t {
     u32 frame_stream_id_pod_offset;
 };
 
-// 用于处理头部的临时结构,减少栈使用
-struct grpc_header_work_t {
-    struct hpack_header_field hf;
-    char val[W3C_VAL_LENGTH];
-    u32 part1;
-    u32 part2;
-    u32 part3;
-};
-
 struct {
     __uint(type, BPF_MAP_TYPE_HASH);
     __type(key, void *);
@@ -79,7 +70,24 @@ struct {
     __uint(max_entries, 1);
 } grpc_header_ctx_storage SEC(".maps");
 
+struct hpack_header_field {
+    struct go_string_ot name;
+    struct go_string_ot value;
+    bool sensitive;
+};
+
+// 用于处理头部的临时结构,减少栈使用
+// 注意:必须在 hpack_header_field 定义之后
+struct grpc_header_work_t {
+    struct hpack_header_field hf;
+    char val[W3C_VAL_LENGTH];
+    u32 part1;
+    u32 part2;
+    u32 part3;
+};
+
 // 工作缓冲区,避免栈空间超限
+// 注意:必须在 grpc_header_work_t 定义之后
 struct {
     __uint(type, BPF_MAP_TYPE_PERCPU_ARRAY);
     __uint(key_size, sizeof(u32));
@@ -87,12 +95,6 @@ struct {
     __uint(max_entries, 1);
 } grpc_header_work_storage SEC(".maps");
 
-struct hpack_header_field {
-    struct go_string_ot name;
-    struct go_string_ot value;
-    bool sensitive;
-};
-
 // Injected in init
 volatile const u64 stream_method_ptr_pos;
 volatile const u64 frame_fields_pos;